Linux 关于time()函数的使用注意
来源:互联网 发布:大数据时代的小数据 编辑:程序博客网 时间:2024/05/01 18:28
函数原型:
#include <time.h>time_t time(time_t *t);
获取当前时间,即从1970年1月1日 00:00:00到当前时刻的秒数。
这里注意,这个当前时间并不是系统显示的时间(date所看到的时间),
而是从0时区的1970年1月1日 00:00:00到当前0时区的那一时刻的秒数。
即:即使在不同的服务器上,抑或在不同的时区中,只要系统时间一样,那么用time获取到的时间都是相同的。
如果要转化为本地时间,则要用localtime函数。即要将时区加上。
比如北京时间是+8时区,则需要加上8个小时的秒数。
问题产生:
如果一个模块,需要在每天0点做一个操作,而这个模块中判断零点的方法是用如下方法:
time_t _now;time(&_now);if(0 == (now%(24*60*60))){// run job}
如果在+8时区,就会发现,这个任务会在每天早上8点执行,而在0点是不会执行的。
问题原因:
正是前面所述的时区问题导致的。
要知道time获取的秒数,是比当前+8时区的时间慢了8个小时。
问题验证:
使用time获取的秒数,打印当前的时间的 时分秒。
使用localtime将time获取的秒数转化为本地时间,并打印时分秒。
<pre name="code" class="html">#include <stdio.h>#include <time.h>#include <sys/time.h>int main(){// 当忽略年份的时候,time函数获取的秒数是由天数组成的 time_t now; time(&now); printf("%u\n", now); printf("days: %u, hour: %u, min: %u, sec: %u\n", now/(24*60*60), (now%(24*60*60))/(60*60), ((now%(24*60*60))%(60*60))/60, ((now%(24*60*60))%(60*60))%60);// 另外一种获取时间的方法,与time函数一样,不过该函数可以获取到时区偏移// 时区偏移单位是分钟,即+8时区的偏移为 -480分钟(0时区 减去 +8时区,所以为负值) struct timeval tv; struct timezone tz; gettimeofday(&tv, &tz); printf("%u %u\n", tv.tv_sec, tv.tv_usec); printf("%d %d\n", tz.tz_minuteswest, tz.tz_dsttime);// 使用localtime将time获取的时间转为本地时间,与上面的时分秒进行比较,相差刚好八个小时。 struct tm tm_; localtime_r(&now, &tm_); printf("%04d-%02d-%02d %02d:%02d:%02d\n", 1900+tm_.tm_year, 1+tm_.tm_mon, tm_.tm_mday, tm_.tm_hour, tm_.tm_min, tm_.tm_sec); return 0;}
可以通过改变本地时区,然后再运行上述程序。查看时间相差是否正确。
0 0
- Linux 关于time()函数的使用注意
- 函数time的使用
- 关于在Linux下使用select函数需要注意的地方
- linux mkdir函数使用注意
- linux mkdir函数使用注意
- 关于_RecordsetPtr下GetRecordCount函数的使用注意
- 关于Python的time模块常用函数
- 关于autocomplete的使用注意
- 关于photoshop使用的注意
- 关于time函数
- linux中关于fork函数的使用
- linux下的time函数们
- linux下的time函数们
- linux下的time类函数
- 关于java.sql.Time的使用
- time及其相关函数的使用
- time及ctime函数的使用
- time函数的使用-测试程序用时
- 其他对象(Math-Random)
- Pots
- Python装饰器与面向切面编程
- 关于文件上传。以上传人来设定限额,或者以每天总额度,或者可以设定同时上传的客户端总数。
- IO流-概述-FileWriter
- Linux 关于time()函数的使用注意
- Mdisk网盘更新日志。【更新至20140728】
- 指针概括
- (1) 在window下运行DPM(deformable part models) -(检测demo部分)
- setCharacterEncoding
- IO流(IO异常处理方式)
- poj 1947 树形dp
- SQL语句的经典语句50例
- java 类加载器