我正在编写一些代码,以便为我提供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
答案 0 :(得分:0)
time()返回UTC时间,您必须考虑它的偏移量。或者在使用localtime()将UTC转换为本地后使用时间格式化函数asctime。