将unix纪元时间转换为人类可读时间

时间:2013-01-29 21:17:59

标签: unix time epoch

首先我有一个Unix纪元时间1270787111。

然后基于这个网站: http://untangible.com/2009/01/covert-unix-epoch-dates-in-microsoft-excel-including-timezone-examples.html, 我将数字转换为40276.9758217592。 然后我将值放入Excel单元格并将其转换为“日期”格式为:4/8/10 23:25 我不知道这是怎么回事。如何将价值40926转换为2010年(年)04(月)08(日)?有没有其他编程方法可以将Unix纪元时间转换为人类可读的格式时间?

3 个答案:

答案 0 :(得分:3)

我个人最喜欢的是

perl -E 'say scalar gmtime 1270787111'

答案 1 :(得分:2)

如果你有GNU coreutils date命令,你可以这样做:

$ date -d @1270787111
Thu Apr  8 21:25:11 PDT 2010

如果您希望在C中执行此操作,请使用localtime()gmtime()time_t值1270787111转换为struct tm,然后使用asctime()将其转换为人类可读的字符串。 ctime(t)相当于asctime(localtime(t))。这假设您的C库表示自Unix纪元(1970-01-01 00:00:00)以来的秒数time_t; POSIX保证这一点,但C不支持。

strftime()获取struct tm并将其转换为人类可读的字符串,让您控制格式,而不是使用"Thu Apr 8 21:25:11 2010\n"强加的默认ctime()格式asctime()(是的,默认格式包括尾随换行符)。

请务必阅读这些功能的说明文件。它们需要大量的指针操作。

答案 2 :(得分:1)

Excel从1900年1月0日开始(是的,1月0日)。从link开始。

  

数字的整数部分ddddd表示自1900年1月1日以来的天数

您在1/0/1900之后的40,276天结束的日期。

许多编程语言(C / C ++,Perl,PHP等)中通常都有内置函数来处理UNIX纪元时间戳。它实际上取决于您使用的语言,您将调用哪些方法/函数。这是一个显示一些examples in C的链接。