当前位置: 代码网 > it编程>编程语言>C# > Qt读取本地系统时间的几种方式小结

Qt读取本地系统时间的几种方式小结

2024年05月18日 C# 我要评论
一,使用windowsapi函数getlocaltime(精确到毫秒)typedef struct _systemtime //systemtime结构体定义{  word wyear;//年  

一,使用windows api函数getlocaltime(精确到毫秒)

typedef struct _systemtime   //systemtime结构体定义

{
  word wyear;//年
  word wmonth;//月
  word wdayofweek;//星期,0为星期日,1为星期一,2为星期二……
  word wday;//日
  word whour;//时
  word wminute;//分
  word wsecond;//秒
  word wmilliseconds;//毫秒
} systemtime,*psystemtime;
systemtime sys;
getlocaltime( &sys );
printf("%4d/%2d/%2d %2d:%2d:%2d.%3d\n",  
sys.wyear,sys.wmonth,sys.wday,sys.whour,sys.wminute,sys.wsecond,sys.wmilliseconds); 
//输出为“2024/3/16 10:13:23.234”

二,使用c语言函数localtime

1,使用asctime()进行格式转换

/*得到系统时间*/
time_t cur;
struct daytime;
cur = time((time_t*)null);
time(&cur);       
 
/*时间转换*/
daytime = *localtime(&cur);     
printf("%s", asctime(&daytime));
//输出为“wed feb 13 15:46:11 2016”

2,使用strftime()进行格式转换

time_t t = time( 0 );
char tmp[64];
strftime( tmp, sizeof(tmp), "%y/%m/%d %x %a 本年第%j天 %z",localtime(&t) );
printf("%s\n",tmp);
//输出为“2016/05/20 13:11:57 friday 本年第141天 中国标准时间”
其中函数size_t strftime(char *strdest,size_t maxsize,const char *format,const  struct tm *timeptr)

功能为根据format指向字符串中格式命令把timeptr中保存的时间信息放在strdest指向的字符串中,最多向strdest中存放maxsize个字符。该函数返回向strdest指向的字符串中放置的字符数。

format参数说明:
%a 星期几的简写
%a 星期几的全称
%b 月份的简写
%b 月份的全称
%c 标准的日期的时间串
%c 年份的前两位数字
%d 十进制表示的每月的第几天
%d 月/天/年
%e 在两字符域中,十进制表示的每月的第几天
%f 年-月-日
%g 年份的后两位数字,使用基于周的年
%g 年份,使用基于周的年
%h 简写的月份名
%h 24小时制的小时
%i 12小时制的小时
%j 十进制表示的每年的第几天
%m 十进制表示的月份
%m 十时制表示的分钟数
%n 新行符
%p 本地的am或pm的等价显示
%r 12小时的时间
%r 显示小时和分钟:hh:mm
%s 十进制的秒数
%t 水平制表符
%t 显示时分秒:hh:mm:ss
%u 每周的第几天,星期一为第一天 (值从1到7,星期一为1)
%u 第年的第几周,把星期日作为第一天(值从0到53)
%v 每年的第几周,使用基于周的年
%w 十进制表示的星期几(值从0到6,星期天为0)
%w 每年的第几周,把星期一做为第一天(值从0到53)
%x 标准的日期串
%x 标准的时间串
%y 不带世纪的十进制年份(值从0到99)
%y 带世纪部分的十制年份
%z,%z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号

三,使用qdatetime获取带日期的时间

qdatetime current_date_time =qdatetime::currentdatetime();
qstring current_date =current_date_time.tostring("yyyy.mm.dd hh:mm:ss.zzz ddd");

yyyy表示年;mm表示月;dd表示日; hh表示小时;mm表示分;ss表示秒;zzz表示毫秒;ddd表示周几

connect(&time,signal(timeout()),this,slot(ontimeout()));
time.start(1000);
 
void mainwindow::ontimeout()
{
    // 获取系统当前时间
    qdatetime datetime = qdatetime::currentdatetime();
    sdatetimer = datetime.tostring("yyyy-mm-dd hh:mm:ss.zzz");
    ui->label->settext(sdatetimer);
    // 显示的内容
    ui->lcdnumber->display(sdatetimer);
}

四,使用qtime获取本地时间

qtime可以像qdatetime::tostring那样直接输出固定格式的字符串。

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();     //当前的毫秒
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com