您的位置:首页 > 运维架构 > Linux

linux获取及设置系统时间

2013-08-07 17:39 399 查看
今天查找了一下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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: