QML基础:QML日期类型Date

本文介绍了QML中的Date类型,包括fromLocaleDateString、fromLocaleString、fromLocaleTimeString等方法的使用,以及如何处理日期格式和语言环境。示例展示了如何在不同格式和环境下转换日期和时间。

引言

用了N年的QWidget,因为项目需求而开始学习QML做一些动态的界面,下面开始记录学习QML的新路历程。
注:学习有误的望指点一二,不喜勿喷!!!

日期类型Date

方法:

  • string fromLocaleDateString(locale, dateString, format)
  • string fromLocaleString(locale, dateTimeString, format)
  • string fromLocaleTimeString(locale, timeString, format)
  • string timeZoneUpdated()
  • string toLocaleDateString(locale, format)
  • string toLocaleString(locale, format)
  • string toLocaleTimeString(locale, format)

详细说明

QML Date扩展了JavaScript Date Object相应的功能函数。
语言环境格式枚举包含以下:(语言环境locale是由ANSI C提供支持,命名规则为语言_地域.字符集,如:zh_CN.GBK,z代表中文,CH代表大陆地区,GBK表示字符集)

  • Locale.LongFormat
    字符串的全拼格式,例如:"January"作为月份
  • Locale.ShortFormat
    字符串简写格式,例如:“Jan”作为月份
  • Locale.NarrowFormat
    当显示空间有限时使用的特殊格式,例如:“J”作为月份

或者通过设置字符串格式:

格式输出
d日期数字,不带前置零(1到31)
dd日期数字,带前置零(01到31)
ddd简化版本地日期名称(Mon-Sun)
dddd全拼本地日期名称(Monday-Sunday)
M月数,不带前置零(1到12)
MM月数,带前置零(01到12)
MMM简化版本地月数(Jan-Dec)
MMMM全拼版本地月数(January-December)
y后两位数的年份
yyyy四位数的年份

所有其他输入的字符都将被忽略。用单引号引起来的任何字符都将视为普通文本,而在输出中,两个连续的单引号会被一个单引号替换。
字符串格式示例:(2020年7月10日)

格式输出
dd.MM.yyyy10.07.2020
ddd MMMM d yyFri July 10 20
‘The day is’ ddddThe day is Friday

时间格式化表达式:

表达式输出
h不带前置零的时(如果显示AM/PM,则为0-23或者1-12)
hh带前置零的时(如果显示AM/PM,则为00-23或者01-12)
H不带前置零的时(0-23)
HH带前置零的时(00-23)
m不带前置零的分(0-59)
mm带前置零的分(00-59)
s不带前置零的秒(0-59)
ss带前置零的秒(00-59)
z不带前置零的毫秒数(0-999)
zzz带前置零的毫秒数(000-999)
AP or A区分上下午,AP将被"AM"或“PM”替换
ap or a区分上下午,ap将被“am”或“pm”替换
t时区(例如“CEST”)

时间格式字符串示例:

格式输出
hh:mm:ss.zzz14:13:09.042
hⓂ️s ap2:13:9 pm
HⓂ️s a14:13:9 pm

如果日期无效,则返回一个空字符串

方法介绍

  • string fromLocaleDateString(locale, dateString, format)
    指定语言环境locale和输入格式format,将日期字符串转换成Dat对象
    如果未指定格式format,则将使用Locale.LongFormat
    如果未指定语言环境locale,则使用默认环境。
    下面的示例显示当前日期,首先使用默认的语言环境和格式将其格式化日期字符串,然后以相同的方式再解析
import  QtQml 2.0

QtObject {{
    property var locale: property var locale: Qt.locale()()
    property date currentDate: property date currentDate: new Date()Date()
    property string dateStringproperty string dateString

    ComponentComponent.onCompleted: {: {
        dateString = currentDate.toLocaleDateString();();
        print(Dateprint(Date.fromLocaleDateString(dateString));(dateString));
    }}
}}
  • string fromLocaleString(locale, dateTimeString, format)
    指定语言环境和格式,将datetime字符串转换成Date对象
    如果未指定格式format,则将使用Locale.LongFormat
    如果未指定语言环境locale,则使用默认环境。
    下面的示例显示使用默认语言环境从日期时间字符串中以某种格式解析的日期实现:
import  QtQml 2.0

QtObject {{
    property var locale: property var locale: Qt.locale()()
    property string dateTimeString: property string dateTimeString: "Tue 2013-09-17 10:56:06"

    ComponentComponent.onCompleted: {: {
        print(Dateprint(Date.fromLocaleString(locale(locale, dateTimeString, "ddd yyyy-MM-dd hh:mm:ss"));
    }}
}}
  • string fromLocaleTimeString(locale, timeString, format)
    之定义语言环境和格式将时间字符串转换成Data对象。
    如果未指定格式format,则将使用Locale.LongFormat
    如果未指定语言环境locale,则使用默认环境。
    以下示例显示当前时间,首先使用默认语言环境和ShortFormat将其格式化为时间字符串,然后以相同的方式再解析回Date对象。
import  QtQml 2.2

QtObject {{
    property var locale: Qt.locale()
    property date currentTime: new Date()
    property string timeString

    Component.onCompleted: {
        timeString = currentTime.toLocaleTimeString(locale, Locale.ShortFormat);
        print(Date.fromLocaleTimeString(locale, timeString, Locale.ShortFormat));
    }
}
  • string timeZoneUpdated()
    通知JS引擎系统的时区已更改。
    JS以UT时间存储Date对象,在对日期组件的所以操作都设计到UTC当前偏移量。如果当前偏移量由于时区的改变而更新,则需要通知JS引擎,以便它可以重新计算偏移量。(偏移量是由于不同的时区导致的)
    在更新系统的时区后,应调用此函数。
    如下实例所示,更改时区的程序在设置新时区后,将调用该函数:
property string selectedTimeZone

onSelectedTimeZoneChanged: {
    MyFunctions.setSystemTimeZone(selectedTimeZone)
    Date.timeZoneUpdated()
}
  • string toLocaleDateString(locale, format)
    将Date转换为适用于指定语言环境和格式的日期字符串。
    如果未指定格式format,则将使用Locale.LongFormat
    如果未指定语言环境locale,则使用默认环境。
    以下示例显示了德语区域设置的当前日期格式:
import QtQuick 2.0

Text {
    text: "The date is: " + new Date().toLocaleDateString(Qt.locale("de_DE"))
}
  • string toLocaleString(locale, format)
    将Date转换为包含指定格式的,适用于指定语言环境的日期+时间的字符串。
    如果未指定格式format,则将使用Locale.LongFormat
    如果未指定语言环境locale,则使用默认环境。
    以下示例显示了德语语言环境下当前日期和时间格式字符串:
import QtQuick 2.0

Text {
    text: "The date is: " + new Date().toLocaleString(Qt.locale("de_DE"))
}
  • string toLocaleTimeString(locale, format)
    将Date转换为包含以指定格式,并适用于指定语言环境的时间字符串。
    如果未指定格式format,则将使用Locale.LongFormat
    如果未指定语言环境locale,则使用默认环境。
    以下示例显示了指定德语语言环境的当前时间:
import QtQuick 2.0

Text {
    text: "The date is: " + new Date().toLocaleTimeString(Qt.locale("de_DE"))
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值