zoukankan      html  css  js  c++  java
  • 时间相关库<ctime>解析

    原创作品,转载请注明来源:http://www.cnblogs.com/shrimp-can/p/5649487.html 

    一、定义的类型

    1.clock_t:时钟类型

    2.size_t:unsigned int

    3.time_t:时间类型

    4.struct tm:结构,成员如下:

    MemberTypeMeaningRange
    tm_sec int seconds after the minute 0-60*
    tm_min int minutes after the hour 0-59
    tm_hour int hours since midnight 0-23
    tm_mday int day of the month 1-31
    tm_mon int months since January 0-11
    tm_year int years since 1900  
    tm_wday int days since Sunday 0-6
    tm_yday int days since January 1 0-365
    tm_isdst int Daylight Saving Time flag  

    二、定义的宏

    1.NULL:空指针

    2.CLOCKS_PER_SEC:每秒的时钟周期

    三、时间操作函数

    1.clock:clock_t clock (void);

    返回当前时钟周期,转换为s除以CLOCKS_PER_SEC

    2.difftime:double difftime (time_t end, time_t beginning);

    计算geginning和end之间的时间单位秒

    3.mktime:time_t mktime (struct tm * timeptr);

    返回timeptr指向的时间,timeptr也会更新其他的。

      time_t rawtime;
      struct tm * timeinfo;
      int year, month ,day;
      const char * weekday[] = { "Sunday", "Monday",
                                 "Tuesday", "Wednesday",
                                 "Thursday", "Friday", "Saturday"};
      printf ("Enter year: "); fflush(stdout); scanf ("%d",&year);
      printf ("Enter month: "); fflush(stdout); scanf ("%d",&month);
      printf ("Enter day: "); fflush(stdout); scanf ("%d",&day);
      time ( &rawtime );
      timeinfo = localtime ( &rawtime );
      timeinfo->tm_year = year - 1900;
      timeinfo->tm_mon = month - 1;
      timeinfo->tm_mday = day;
      mktime ( timeinfo );
      printf ("That day is a %s.
    ", weekday[timeinfo->tm_wday]);
    输出为:
    Enter year: 2000
    Enter month: 5
    Enter day: 20
    That day is a Saturday.

    4.time:time_t time (time_t* timer);

    得到当前的日历时间,存储在timer中,如果获取失败返回空指针,成功返回当前日历时间

    四、时间转化相关函数

    1.asctime:char* asctime (const struct tm * timeptr);

    将tm类型的时间转化为字符串的形式,返回的字符串如Www Mmm dd hh:mm:ss yyyy

    2.ctime:char* ctime (const time_t * timer);

    将time_t类型的时间转化为字符串的形式,返回的字符串如:Www Mmm dd hh:mm:ss yyyy

    3.gmtime:struct tm * gmtime (const time_t * timer);

    将time_t的时间类型转化为UTC时间,相应的时间存储在结构tm中

    4.localtime:struct tm * localtime (const time_t * timer);

    使用timer中的时间填充localtime

    5.strftime:size_t strftime (char* ptr, size_t maxsize, const char* format, const struct tm* timeptr );

    将结构tm描述的时间按format格式拷贝到字符串ptr中,最大maxsize字符。formate格式如下:

      time_t rawtime;
      struct tm * timeinfo;
      char buffer [80];
      time (&rawtime);
      timeinfo = localtime (&rawtime);
      strftime (buffer,80,"Now it's %I:%M%p.",timeinfo);
      puts (buffer);
    

     输出为:

    Now it's 03:21PM.
    specifierReplaced byExample
    %a Abbreviated weekday name * Thu
    %A Full weekday name * Thursday
    %b Abbreviated month name * Aug
    %B Full month name * August
    %c Date and time representation * Thu Aug 23 14:55:02 2001
    %C Year divided by 100 and truncated to integer (00-99) 20
    %d Day of the month, zero-padded (01-31) 23
    %D Short MM/DD/YY date, equivalent to %m/%d/%y 08/23/01
    %e Day of the month, space-padded ( 1-31) 23
    %F Short YYYY-MM-DD date, equivalent to %Y-%m-%d 2001-08-23
    %g Week-based year, last two digits (00-99) 01
    %G Week-based year 2001
    %h Abbreviated month name * (same as %b) Aug
    %H Hour in 24h format (00-23) 14
    %I Hour in 12h format (01-12) 02
    %j Day of the year (001-366) 235
    %m Month as a decimal number (01-12) 08
    %M Minute (00-59) 55
    %n New-line character (' ')  
    %p AM or PM designation PM
    %r 12-hour clock time * 02:55:02 pm
    %R 24-hour HH:MM time, equivalent to %H:%M 14:55
    %S Second (00-61) 02
    %t Horizontal-tab character (' ')  
    %T ISO 8601 time format (HH:MM:SS), equivalent to %H:%M:%S 14:55:02
    %u ISO 8601 weekday as number with Monday as 1 (1-7) 4
    %U Week number with the first Sunday as the first day of week one (00-53) 33
    %V ISO 8601 week number (00-53) 34
    %w Weekday as a decimal number with Sunday as 0 (0-6) 4
    %W Week number with the first Monday as the first day of week one (00-53) 34
    %x Date representation * 08/23/01
    %X Time representation * 14:55:02
    %y Year, last two digits (00-99) 01
    %Y Year 2001
    %z ISO 8601 offset from UTC in timezone (1 minute=1, 1 hour=100)
    If timezone cannot be determined, no characters
    +100
    %Z Timezone name or abbreviation *
    If timezone cannot be determined, no characters
    CDT
    %% % sign %

    参考:http://www.cplusplus.com/reference/ctime/

  • 相关阅读:
    (转)ubuntu 对拍和基本操作
    一个在线翻译LateX的网站
    51nod 1376: 最长递增子序列的数量(二维偏序+cdq分治)
    BZOJ1087: [SCOI2005]互不侵犯King(状态压缩动态规划)
    ZOJ Problem Set
    bzoj2301:[HAOI2011]Problem b(容斥+莫比乌斯反演+分块)
    BZOJ 4318 OSU!期望DP
    CodeForces 235B Let's Play Osu!(概率)
    博客界面美化
    A+B Problem
  • 原文地址:https://www.cnblogs.com/shrimp-can/p/5649487.html
Copyright © 2011-2022 走看看