使用time()计算一天中的时间的问题

时间:2010-09-16 18:31:36

标签: time solaris

我正在编写一些代码,以便为我提供shell中编写的最后一个命令的历史记录,包括时间,格式为小时:分钟。

我有以下代码:

// Modulo by 86400, number of seconds in a day
int totalSeconds = history_time[i] % 86400;
int hours = totalSeconds / 3600;
int minutes = (totalSeconds % 3600) / 60;    

printf("%d %d:%d %s\n", count+1, hours, minutes, history[i]);

我将时间存储如下:

time_t history_time[MAX_HISTORY_SIZE];

// Store the time
time_t t = time(NULL);
history_time[history_index] = t;

时间恰好是错误的,但我不确定为什么。我正在使用Solaris。

输出如下:

1 18:29 ls
2 18:29 cd
3 18:29 ls -al | grep test

分钟是正确的,但不是小时。 在命令行中键入“date”时,我得到:“2010年9月16日14:29:55 EDT 2010”,所以同样的分钟但不同的小时。

我不确定它是否与我的代码或Solaris中的time()函数有关?也许date不使用time()函数,我不确定。

有人请求解决方案吗?

非常感谢,

Jary

1 个答案:

答案 0 :(得分:0)

time()返回UTC时间,您必须考虑它的偏移量。或者在使用localtime()将UTC转换为本地后使用时间格式化函数asctime。