zoukankan      html  css  js  c++  java
  • 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;
    }

    运行结果

    4.  后记

    诫子书 - 诸葛亮

    夫君子之行,静以修身,俭以养德。

    非淡泊无以明志,非宁静无以致远。

    夫学须静也,才须学也,非学无以广才,非志无以成学。

    淫慢则不能励精,险躁则不能冶性。

    年与时驰,意与日去,遂成枯落,多不接世,悲守穷庐,将复何及!

     

  • 相关阅读:
    STM32关于多线程运行的疑问
    流量校准仪开发日志
    来自一位十余年工作经验的老电子工程师的心里话:该出手时便出手!
    什么是开尔文连接
    node.js
    锂电池充电合集
    UICollectionView 使用 介绍
    UICollectionView 讲解
    sourcetree帮助文档
    使用 Git + Dropbox + SourceTree 做 Source Code Management
  • 原文地址:https://www.cnblogs.com/zhaoosheLBJ/p/9322400.html
Copyright © 2011-2022 走看看