zoukankan      html  css  js  c++  java
  • 时间类型

    时间有关的数据类型

    time_t: long类型, 记录从1970年1月1日0时0分0秒到现在经过的秒数,在32位的long类型平台上2038年时间溢出
    struct tm: 符合人类习惯的记录方式

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

    相关函数的重要区别

    ctime(time_t *p):与asctime(localtime(time_t *))效果等同,转换成当地时间的字符串表示形式
    gmtime(time_t *p): 返回成如上的struct tm时间结构.asctime(gmtime(time_t *p))转换成世界统一时间的字符串表示形式
    即两者之间存在一个时间差,一个以当地时间为准,一个以格林尼治时间为准

    时间相加减

    时间相加减要以time_t格式进行操作, 不要用tm结构的成员进行加减

    #include <stdio.h>
    #include <time.h>
    
    void test(){ //以当前时间为准简单加减
        time_t tmp_time;
    	struct tm *ptime;
    	struct tm *tmp;
    	tmp_time = time(NULL);//获取当前时间
    	ptime = localtime(&tmp_time);
    
    	printf("%d-%d-%d %d:%d:%d
    ",(1900+ptime->tm_year),(1+ptime->tm_mon),ptime->tm_mday,
    				ptime->tm_hour,ptime->tm_min,ptime->tm_sec);
    
        //时间相加减要用time_t格式
    	tmp_time -= 30*60;
    	tmp =  localtime(&tmp_time);
    	printf("%d-%d-%d %d:%d:%d
    ",(1900+tmp->tm_year),(1+tmp->tm_mon),tmp->tm_mday,
    				tmp->tm_hour,tmp->tm_min,tmp->tm_sec);
    
        //时间相加减的差误示范
    	ptime->tm_hour += 24;
    	printf("%d-%d-%d %d:%d:%d
    ",(1900+ptime->tm_year),(1+ptime->tm_mon),ptime->tm_mday,
    				ptime->tm_hour,ptime->tm_min,ptime->tm_sec);
    }
    
    void test1(){//构造15:30:00,然后减掉5分19秒
        time_t now=time(NULL);
        struct tm *ptime=localtime(&now);
    
        ptime->tm_hour=15;
        ptime->tm_min=30;
        ptime->tm_sec=0;
    
        time_t ret=mktime(ptime);
        ret=ret-5*50-19;
        struct tm *ret_ptime=localtime(&ret);
        printf("%d:%d:%d
    ",ret_ptime->tm_hour,ret_ptime->tm_min,ret_ptime->tm_sec);
    }
    int main(int argc, const char *argv[])
    {
        test(); 
        test1();
        return 0;
    }
    
  • 相关阅读:
    Single Page Application
    ES6数组方法
    localStorage 和 sessionStorage
    border-color:transparent;
    自适应屏幕高度铺满全屏
    href="#"与javascript:void(0)的区别
    图片模式CMYK和RGB在浏览器下的变化
    IE css HACK
    z-index只能用在定位元素上
    mysql锁机制之间隙锁(Next-Key锁)(五)
  • 原文地址:https://www.cnblogs.com/cfans1993/p/6404032.html
Copyright © 2011-2022 走看看