日期与时间控件QDate, QTime, QDateTime

1. 日期格式符:

d          没有前导零的数字的日期(1到31)

ddd      缩写的本地化日期名称(例如'Mon'到'Sun'
dddd    完整本地化的日期名称(例如“星期一”到“星期日”)
M         没有前导零的数字的月份(1-12)
MM      月份为前导零的数字(01-12)
MMM   缩写的本地化月份名称(例如'Jan'到'Dec')
MMMM   完整的本地化月份名称(例如“1月”到“12月”)
yy     年份为两位数字(00-99)
yyyy    年份为四位数字

 

2. 时间格式符:

h         没有前导零的小时(如果显示AM / PM,则为0到23或1到12)
hh       前导零的小时(如果AM / PM显示,则为00到23或01到12)
H        没有前导零的小时(0到23,即使有AM / PM显示)
HH     前导零的小时(00到23,即使有AM / PM显示)
m        没有前导零的分钟(0到59)
mm      前导零(00到59)的分钟
s           整个秒没有前导零(0到59)
ss        带有前导零(00到59)
z         第二个小数部分, 没有尾随零的毫秒(0到999)
zzz       第二个小数部分, 有尾随零的毫秒(000到999)
AP / A      使用AM / PM显示                AM--上午    PM--下午
ap / a       使用am / pm显示
t             时区

3. QDateTime

在系统语言是English下
QDateTime::currentDateTime().toString(“ddd”);//这样获取到的是Mon-Sun,英文星期的3个字母的缩写。
QDateTime::currentDateTime().toString(“dddd”);//这样获取到的是Monday-Sunday,英文星期。

在系统语言是简体中文下:
QDateTime::currentDateTime().toString(“ddd”);//这样获取到的是周一-周日。
QDateTime::currentDateTime().toString(“dddd”);//这样获取到的是星期一-星期日。

设置语言参数:

QLocale locale = QLocale::Chinese;//指定中文显示
//QLocale locale = QLocale::English;//指定英文显示
//QLocale locale = QLocale::Japanese;//指定日文显示

QString(locale.toString(QDateTime::currentDateTime(),QString(“dddd”)));

//这样获得的星期为指定的语言格式下的。此处为星期一 - 星期日
【注】若获取失败时,请将 QString(“dddd”) 改成 QString(“dddd ”),加个 空格

4. 例如:

获取系统当前时间并设置显示格式
QDateTime current_date_time = QDateTime::currentDateTime();
QString current_date = current_date_time.toString("yyyy-MM-dd hh:mm:ss ddd");
例:2013-05-24 13:09:10 周五
 
获取当前时间时、分、秒
范围:小时(0--23)、分钟(0--59)、秒(0--59)、毫秒(0--999)
QTime current_time = QTime::currentTime();
int hour = current_time.hour();
int minute = current_time.minute();
int second = current_time.second();
int msec = current_time.msec();
 
比较日期大小
//获取当前时间及文件缓存时间
QDateTime currentDateTime = QDateTime::currentDateTime();
QDateTime dateTime = QDateTime::fromString(strDate, sDateTimeFormat);
 
//获取文件缓存一个月之后的时间
QDateTime afterOneMonthDateTime = dateTime.addMonths(1);
 
//如果缓存时间超过一个月,则删除
qint64 nSecs = afterOneMonthDateTime.secsTo(currentDateTime);
if (nSecs > 0)
{
    QFile::remove(strFilePath);
}
这里是举的一个小例子(删除一个月以前的缓存文件),当然也可以使用格式化后的字符串进行比较!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章