linux获取及设置系统时间

    今天查找了一下linux获取及设置系统时间的函数,并做了以下总结:

#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include <string.h>

int time_fun()
{

    time_t t_t;
    struct tm * time_info;
    char time_str [40];
    time(&t_t );
     
    /*将t_t所指的time_t结构中的信息转换成真实
     *世界所使用的时间日期表示方法,然后将结果由结构tm返回
     *头文件为time.h。*/ 
    time_info = localtime(&t_t );
    
//    结构tm的定义为
//   struct tm
//   {
//   int tm_sec;  /*代表目前秒数,正常范围为0-59,但允许至61秒*/
//   int tm_min;  /*代表目前分数,范围0-59*/
//   int tm_hour; /*从午夜算起的时数,范围为0-23*/
//   int tm_mday; /*目前月份的日数,范围01-31*/
//   int tm_mon;  /*代表目前月份,从一月算起,范围从0-11 1月为0*/
//   int tm_year; /*从1900 年算起至今的年数*/
//   int tm_wday; /*一星期的日数,从星期一算起,范围为0-6 星期日为0*/
//   int tm_yday; /*从今年1月1日算起至今的天数,范围为0-365*/
//   int tm_isdst;/*日光节约时间的旗标*/
//   };

    printf("localtime:\n");
    printf("tm_sec: %d tm_min: %d tm_hour: %d \n
            tm_mday: %d tm_mon: %d tm_year: %d \n
            tm_wday: %d tm_yday: %d tm_isdst: %d \n", 
            time_info->tm_sec, time_info->tm_min, time_info->tm_hour, 
            time_info->tm_mday, time_info->tm_mon, time_info->tm_year,
            time_info->tm_wday, time_info->tm_yday, time_info->tm_isdst);
    printf("\n");
    printf("mktime:%d\n", (int)mktime(time_info));
    printf("\n");
    
    
    strftime(time_str,sizeof(time_str),"%Y-%m-%d %H:%M:%S",time_info);/**/
    printf ("%s\n", time_str);
    printf ("%s", asctime(time_info));  /*asctime(time_info):将时间和日期以字符串格式表示*/
    
    printf ("%s", ctime(&t_t));  /* ctime(&t_t):将时间和日期以字符串格式表示*/
    
    
    struct timeval tv;
//    struct timeval
//    {
//        time_t tv_sec;  /* Seconds,为Epoch时间(初始时间)到创建 struct timeval时的秒数*/
//        suseconds_t tv_usec;  /* Microseconds,微秒数,即秒后面的零头 */
//    };

    struct timezone tz;
//    struct timezone 
//  { 
//      int tv_minuteswest;  /*格林威治时间往西方的时差*/
//      int tv_dsttime;      /*时间的修正方式*/
//  }; 
    /*得到当前时间和时区,分别写到tv和tz中,
     *如果tz为NULL则不向tz写入
     *头文件为sys/time.h*/
    gettimeofday(&tv, &tz);  

    printf("tv_sec:%d\n", (int)tv.tv_sec);
    printf("tv_usec:%ld\n", (long)tv.tv_usec);
    printf("tz_minuteswest:%d\n", tz.tz_minuteswest);
    printf("tz_dsttime:%d\n", tz.tz_dsttime);
    
    tv.tv_sec = 0;
    tv.tv_usec = 0;
    /*设置系统时间为Epoch时间,
     *root权限才可以设置*/
    settimeofday(&tv, &tz);  
     
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值