我想将纪元时间转换为人类可读的格式。我在互联网上搜索并找到了
示例:date -d @1270787111
。
我重读了日期手册。
-d, - date = STRING描述的显示时间,而不是'现在'
并且
日期字符串 --date = STRING主要是免费的......
我没有发现这种格式。我想念一下吗?
答案 0 :(得分:2)
您所指的“DATE STRING”部分以下列句子结尾:
日期字符串格式比此处容易记录的更复杂 但在信息文档中有详细描述。
换句话说,你必须参考" info"页面。您可以在终端中键入info date
,或在线查看这些文档。例如,输入格式已经很好地描述了here。
为什么@
需要前缀date -d @1270787111
?手册页示例中提到的@
特定格式为described in §28.8:
自纪元以来28.8秒
如果您的号码前面有
@', it represents an internal time stamp as a count of seconds. The number can contain an internal decimal point (either
。'或`,');任何不支持的超额精度 内部表示被截断为负无穷大。这样的 number不能与任何其他日期项组合,因为它指定了a 完整的时间戳。在内部,计算机时间表示为秒数 从一个时代开始 - 一个定义明确的时间点。在GNU和POSIX上 系统,纪元是1970-01-01 00:00:00 UTC,所以
@0' represents this time,
@ 1'代表1970-01-01 00:00:01 UTC,依此类推。 GNU和 大多数其他符合POSIX标准的系统都支持扩展等时间 到POSIX,使用负数,这样`@ -1'代表1969-12-31 23:59:59 UTC。传统的Unix系统使用32位二进制补码计算秒数 整数,可以代表1901-12-13 20:45:52到的时间 2038-01-19 03:14:07 UTC更现代的系统使用64位计数 纳秒次数的秒数,可以代表所有时间 已知的宇宙寿命为1纳秒的分辨率。
在大多数主机上,这些计数忽略了闰秒的存在。 例如,在大多数主机上
@915148799' represents 1998-12-31 23:59:59 UTC,
@ 915148800'代表1999-01-01 00:00:00 UTC,没有 代表干预闰秒的方式1998-12-31 23:59:60 UTC。
答案 1 :(得分:0)
日期可以通过自1970年以来的整数秒数输入 以“@”为前缀。
所以这个
date -d @1270787111
表示描述自纪元(1970/01/01)以来1270787111秒的数据。
答案 2 :(得分:0)
日期字符串 --date = STRING是一种大多数自由格式的人类可读日期字符串 例如“Sun,2004年2月29日16:21:42 -0800”或“2004-02-29 16:21:42”或 甚至“下周四”。日期字符串可能包含指示cal-的项目 结束日期,时间,时区,星期几,相对时间,相关 生日期和数字。空字符串表示该字符串的开头 天。日期字符串格式比容易记录的更复杂 这里,但在信息文档中有详细描述。
从手册页的底部
info coreutils 'date invocation'
应该为您提供所需的信息
日期输入格式
- 一般日期语法::通用规则
- 日历日期项目:: 1994年12月19日
- 时间项目::晚上9:20
- 时区项目:: EST,PDT,GMT
- 星期几项目::星期一和其他人
- 日期字符串中的相关项目::下周二,2年前
- 日期字符串中的纯数字:: 19931219,1440
- 自大纪元以来的秒数:: @ 1078100502
- 指定时区规则:: TZ =“America / New_York”,TZ =“UTC0”
- parse_datetime的作者:: Bellovin,Eggert,Salz,Berets,等