zoukankan      html  css  js  c++  java
  • C++ 日期与时间-ctime

    C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <ctime> 头文件

    time.h 头文件定义了四个变量类型、两个宏

    四个变量类型:

    size_t是无符号整数类型,它是 sizeof 关键字的结果。
    clock_t 这是一个适合存储处理器时间的类型,类型为unsigned long
    time_t 这是一个适合存储日历时间类型。unsigned long类型
    struct tm 这是一个用来保存时间和日期的结构

    tm 结构的定义如下:

    struct tm
    {
       int tm_sec;         /* 秒,范围从 0 到 59      */
       int tm_min;         /* 分,范围从 0 到 59      */
       int tm_hour;        /* 小时,范围从 0 到 23     */
       int tm_mday;        /* 一月中的第几天,范围从 1 到 31    */
       int tm_mon;         /* 月,范围从 0 到 11(注意)  */
       int tm_year;        /* 自 1900 年起的年数      */
       int tm_wday;        /* 一周中的第几天,范围从 0 到 6 */
       int tm_yday;        /* 一年中的第几天,范围从 0 到 365   */
       int tm_isdst;       /* 夏令时               */
    };

    两个宏:

    NULL这个宏是一个空指针常量的值。
    CLOCKS_PER_SEC 这个宏表示每秒的处理器时钟个数。用于将clock()函数的结果转化为以秒为单位的量,这个量的具体值是与操作系统相关的,通常为1000
    #include <iostream>
    #include<ctime>
    using namespace std;
    
    int main()
    {
        clock_t start, finish; //定义两个处理器时钟变量
        double total = 0;
        int i = 0;
        start = clock();  //读取时间
        //该函数返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。如果时间不可用,则返回 -1
        //为了获取 CPU 所使用的秒数,您需要除以 CLOCKS_PER_SEC
        //在 32 位系统中,CLOCKS_PER_SEC 等于 1000000,该函数大约每 72 分钟会返回相同的值
    
        for (; i < 100000000; ++i)
        {
            //do someting;
        }
        finish = clock();
        total = (double)(finish - start) / CLOCKS_PER_SEC;//将时间转换为秒
    
        //printf("CPU 占用的总时间:%f
    ", total_t);
    
        cout << total << endl;
    
        return 0;
    }
    time_t seconds;  //创建日历时间对象
        seconds = time(NULL);  //返回时间--格式一
      //time(&seconds);
    //返回时间--格式二
    //当参数为NULL时,得到当前日历时间(从1970-01-01 00:00:00到现在的秒数)
    time_t timer;
        timer = time(NULL);
        char stime[30];
        ctime_s(stime, sizeof stime, &timer); //将日历时间参数timer转换为字符串
        //返回字符串格式:星期,月,日,小时:分:秒,年
    
        cout << stime << endl;
        system("pause");  //暂停
        //需要#include<stdlib.h>

    time_t timer;
        time(&timer);
        
        struct tm* Now = new tm(); //创建日期时间结构变量指针
        localtime_s(Now, &timer);  //使用timer的值来填充tm结构
        
        cout << Now->tm_hour << endl;
        cout << Now->tm_min << endl;
    time_t timer;
        time(&timer);
        
        struct tm Now; 
        localtime_s(&Now, &timer); 
        char str[32];
        asctime_s(str, &Now);//将结构tm*所表示的时间转换为字符串
        //返回的时间字符串格式为:星期,月,日,小时:分:秒,年
        cout << str << endl;

    time_t first, second;
        time(&first);
        Sleep(2000);
        time(&second);
        double a = difftime(second, first);  //返回两次time_t的时间差
        //单位:秒
        cout << a << endl;
    time_t timer;
        tm info;
        time(&timer);
        gmtime_s(&info ,&timer); //获取时间
        //得到以结构tm表示的时间信息,并用格林威治标准时间表示
        //格林威治标准时间(Greenwich Mean Time,GMT),中国内地的时间与UTC得时差为+8,也即UTC+8,美国为UTC-5
    time_t timer,timer1;
        tm info;
        time(&timer);
        gmtime_s(&info ,&timer); 
        
        timer1 = mktime(&info); //把tm*的时间格式转换为time_t格式的时间
    #include <iostream>
    #include<ctime>
    using namespace std;
    
    int main()
    {
        time_t timer;
        tm info;
        char buf[80];
    
        time(&timer);
        localtime_s(&info, &timer);  
        strftime(buf, 80, "%Y年%m月%e日_%H时%M分%S秒", &info);//按照指定的格式输出为字符串
        //参数1:char*   用来保存字符串
        //参数2:写到参数1中的最多字节数
        //参数3:格式
        //参数4:tm*
        //以年月日_时分秒的形式表示当前时间
        /*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 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
        %U 第年的第几周,把星期日做为第一天(值从0到53)
        %V 每年的第几周,使用基于周的年
        %w 十进制表示的星期几(值从0到6,星期天为0)
        %W 每年的第几周,把星期一做为第一天(值从0到53)
        %x 标准的日期串
        %X 标准的时间串
        %y 不带世纪的十进制年份(值从0到99)
        %Y 带世纪部分的十进制年份
        %z,%Z 时区名称,如果不能得到时区名称则返回空字符。
        %% 百分号
    */
        cout << buf << endl;
        
    
        return 0;
    }

  • 相关阅读:
    json返回数据拼接HTML
    jquery文本框验证字符长度和只能输入数字
    DataTable转换为Json格式
    将集合类转换成DataTable
    class创建单击事件
    ajax局部刷新分页
    查找根字符串
    游标的使用——mysql
    .NET 各种框架
    xml与datatable类型互换
  • 原文地址:https://www.cnblogs.com/liming19680104/p/13475173.html
Copyright © 2011-2022 走看看