C言語「time.h」時間、日付操作

9475 ワード

文書ディレクトリ
  • time.h
  • strftime()のフォーマットパラメータ
  • について
    time.h
    4つの変数タイプ、2つのマクロ、およびさまざまな操作日時の関数を定義します.
       /*
        * size_t               ,   sizeof       。 unsigned long
        * clock_t                      。     unsigned long
        * time_t is                  。      long
        * struct 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;		 ,1  0, [0-11]
        *  	int	tm_year;	 ,  1900      
        *  	int	tm_wday;	       , [0-6]
        *  	int	tm_yday;	       ,[0-365]
        *  	int	tm_isdst;	      
        *  	long	tm_gmtoff;	      UTC  。
        * 	char	*tm_zone;	    
        * }
        *
        *  
        *  	NULL                         。
        *  	CLOCKS_PER_SEC                 。
        *
        *       ,time_t   tm   ,  time_t   tm         
        */
    

    #include 
    #include 
    void time_test() {
        clock_t start = clock();//       (        ),cpu      。
    
        time_t tl;
        printf("a. %ld
    "
    , time(&tl)); // , time_t struct tm *cur = localtime(&tl); //time_t tm , 。 // :Www Mmm dd hh:mm:ss yyyy。 Www ;Mmm ;dd ;hh ;mm ;ss ;yyyy 。 printf("b. %s", asctime(cur)); //tm 。 printf("c. %s", ctime(&tl)); // , time_t 。 struct timespec ts; ts.tv_sec = 3; // ts.tv_nsec = 1500; nanosleep(&ts, NULL); // ts 。 time_t ntl; printf("d. %f
    "
    , difftime(tl, time(&ntl))); // time_t time_t 。 double //time_t tm , (UTC) (GMT) 。 struct tm *tmg = gmtime(&tl);// , ( ) 8 , , 8 。 printf("e. %s", asctime(tmg));//tm 。 printf("f. %ld
    "
    , mktime(tmg));// time_t char str[20]; /* * size_t strftime(char *strDest, size_t maxsize, const char *format, const struct tm *timeptr); * format timeptr strDest , strDest maxsize 。 * strDest , 。 * * , 2020-02-23 12:13:53 19 , '\0', 20 。 */ size_t dstSize = strftime(str, 20, "%Y-%m-%d %T", tmg); // maxsize =20, dstSize=19; maxsize=19,dstSize=0 printf("g. %s, dstSize=%lu
    "
    , str, dstSize); printf("h. :%lu
    "
    , clock() - start);// clock() 。 。 }

    しゅつりょく
    a. 1582461171
    b. Sun Feb 23 20:32:51 2020
    c. Sun Feb 23 20:32:51 2020
    d. -3.000000
    e. Sun Feb 23 12:32:51 2020
    f. 1582432371
    g. 2020-02-23 12:32:51, dstSize=19
    h.         :902
    

    strftime()のフォーマットパラメータについて
    %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     ,                。
    %%