• Linux C 中获取local日期和时间 time()&localtime()函数


    1.  time() 函数

    复制代码
    /*  time - 获取计算机系统当前的日历时间(Calender Time)
     *         处理日期时间的函数都是以本函数的返回值为基础进行运算
     *
     *  函数原型:
     *      #include <time.h>
     *  
     *      time_t time(time_t *calptr);
     *
     *  返回值:
     *      成功:秒数,从1970-1-1,00:00:00
     *
     *  使用:
     *      time_t now;
     *  
     *      time(&now); // == now = time(NULL);
     */
    复制代码

     2.  localtime() 函数

    复制代码
    /*
     *  localtime - 将时间数值变换成本地时间,考虑到本地时区和夏令时标志
     *
     *  函数声明:
     *      #include <time.h>
     *
     *      struct tm * localtime(const time_t *timer);
     *
     */
    复制代码
    复制代码
    /*  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;     /*月份,  范围从0到11 */
        int tm_year;    /*自 1900起的年数 */
        int tm_wday;    /*一周中的第几天,范围从0到6 */
        int tm_yday;    /*一年中的第几天,范围从0到365 */
        int tm_isdst;   /*夏令时 */
    };
    复制代码

    3. Demo 

    复制代码
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <errno.h>
    #include <time.h>
    
    #define _DATETIME_SIZE  32
    
    
    // GetDate - 获取当前系统日期
    /**
     *  函数名称:GetDate
     *  功能描述:取当前系统日期
     *
     *  输出参数:char * psDate  - 系统日期,格式为yyymmdd
     *  返回结果:0 -> 成功
     */
    int 
    GetDate(char * psDate){
        time_t nSeconds;
        struct tm * pTM;
        
        time(&nSeconds); // 同 nSeconds = time(NULL);
        pTM = localtime(&nSeconds);
        
        /* 系统日期,格式:YYYMMDD */
        sprintf(psDate,"%04d-%02d-%02d", 
                pTM->tm_year + 1900, pTM->tm_mon + 1, pTM->tm_mday);
        
        return 0;
    }
    
    // GetTime  - 获取当前系统时间
    /**
     *  函数名称:GetTime
     *  功能描述:取当前系统时间
     *
     *  输出参数:char * psTime -- 系统时间,格式为HHMMSS
     *  返回结果:0 -> 成功
     */
    int 
    GetTime(char * psTime) {
        time_t nSeconds;
        struct tm * pTM;
        
        time(&nSeconds);
        pTM = localtime(&nSeconds);
        
        /* 系统时间,格式: HHMMSS */
        sprintf(psTime, "%02d:%02d:%02d",
                pTM->tm_hour, pTM->tm_min, pTM->tm_sec);
               
        return 0;       
    }
    
    // GetDateTime - 取当前系统日期和时间
    /**
     *  函数名称:GetDateTime
     *  功能描述:取当前系统日期和时间
     *
     *  输出参数:char * psDateTime -- 系统日期时间,格式为yyymmddHHMMSS
     *  返回结果:0 -> 成功
     */
    int 
    GetDateTime(char * psDateTime) {
        time_t nSeconds;
        struct tm * pTM;
        
        time(&nSeconds);
        pTM = localtime(&nSeconds);
    
        /* 系统日期和时间,格式: yyyymmddHHMMSS */
        sprintf(psDateTime, "%04d-%02d-%02d %02d:%02d:%02d",
                pTM->tm_year + 1900, pTM->tm_mon + 1, pTM->tm_mday,
                pTM->tm_hour, pTM->tm_min, pTM->tm_sec);
                
        return 0;
    }
    
    // 测试代码
    int main()
    {
        int ret;
        char DateTime[_DATETIME_SIZE];
        
        memset(DateTime, 0, sizeof(DateTime));
        
        /* 获取系统当前日期 */
        ret = GetDate(DateTime);
        if(ret == 0) 
            printf("The Local date is %s
    ", DateTime);
        else 
            perror("GetDate error!");
        
        memset(DateTime, 0, sizeof(DateTime));
        /* 获取当前系统时间 */
        ret = GetTime(DateTime);
        if(ret == 0) 
            printf("The Local time is %s
    ", DateTime);
        else 
            perror("GetTime error!");
        
        memset(DateTime, 0, sizeof(DateTime));
        /* 获取系统当前日期时间 */
        ret = GetDateTime(DateTime);
        if(ret == 0) 
            printf("The Local date and time is %s
    ", DateTime);
        else 
            perror("GetDateTime error!");
        
        
        
        return 0;
    }
    复制代码

    运行结果

  • 相关阅读:
    JS字符串截取(获取指定字符后面的所有字符内容)
    vue图片上传插件
    php获取两个日期之间的所有日期
    laravel做定时任务时,加参数(也可缓存参数)
    前端传参数(数组,值为json字符串),后端接收json_decode()转为数组,数组为空值
    springboot的maven多模块项目
    如何给文件重命名
    springboot的get请求和post请求
    java调用ffmpeg
    mybatis批量插入List
  • 原文地址:https://www.cnblogs.com/Ph-one/p/13041662.html
Copyright © 2020-2023  润新知