• Qt


    简介

    Qt获取系统当前时间的四种方法(一般使用第一种或者第二种)

    方法一:获取带日期的时间,使用QDateTime类

    QDateTime current_date_time =QDateTime::currentDateTime();
    QString current_date =current_date_time.toString("yyyy.MM.dd hh:mm:ss.zzz ddd");

    //current_date字符串结果为"2016.05.20 12:17:01.445 周五"

    其中时间的显示格式可灵活配置,此处简单说明本实例中用到的部分:

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

    注:详细配置格式内容较多,有需要的请自行查看Qt Assistant中关于函数QString QDateTime::toString ( const QString & format ) const的说明

    方法二:使用QTime类

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

    当然QTime也可以像QDateTime::toString那样直接输出固定格式的字符串,使用方法与QDateTime::toString类似,

    也可参考Qt Assistant中关于函数QString QTime::toString ( const QString & format ) const的说明

    方法三:使用标准的C语言函数localtime(精确到秒)

    注:需要包含time.h头文件

    1、使用strftime()进行格式转换

    time_t t = time( 0 );
    char tmp[64];
    strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );
    printf("%s
    ",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 时区名称,如果不能得到时区名称则返回空字符。
    %% 百分号

    2、使用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”

    方法四:使用Windows API 函数GetLocalTime(精确到毫秒)

    SYSTEMTIME sys;
    GetLocalTime( &sys );
    printf("%4d/%2d/%2d %2d:%2d:%2d.%3d
    ",  
    sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute,sys.wSecond,sys.wMilliseconds); 
    //输出为“2016/5/16 10:13:23.234”

    其中SYSTEMTIME结构体定义如下

    typedef struct _SYSTEMTIME {
      WORD wYear;//
      WORD wMonth;//
      WORD wDayOfWeek;//星期,0为星期日,1为星期一,2为星期二……
      WORD wDay;//
      WORD wHour;//
      WORD wMinute;//
      WORD wSecond;//
      WORD wMilliseconds;//毫秒
    } SYSTEMTIME,*PSYSTEMTIME;
    博客园文作者:Citrusliu 博文地址:https://www.cnblogs.com/citrus
  • 相关阅读:
    windows下搭建基于eclipse插件的GoLang开发环境
    vtk类之vtkImageReslice:基本算法,对体数据沿着轴进行切片
    vtk类之vtkTextureMapToSphere:纹理映射算法, 映射球体纹理
    wxpython 之 GDI 画刷Brush(三)
    c# 获取Rss数据
    C# 基础知识系列之面向对象基础
    SilverLight 得到文件绝对路径
    SilverLight C# 读取并修改App.config文件
    Silverlight 脱离浏览器
    C# 中New关键字的用法
  • 原文地址:https://www.cnblogs.com/citrus/p/14818725.html
Copyright © 2020-2023  润新知