关于 date 的问题

2016-08-31 15:56:58 +08:00
 nilai
测试语句:
date -d "2015-09-03T10:26:24.045-08:00" "+%s"
1. 在 ubutnu 下 正常显示时间戳 (version 8.25)

2 在 centos7 下 正常显示时间戳 (version 8.2)

3.在 centos6.5 下提示 ( version 8.4 )
date: invalid date `2015-09-03T10:26:24.045-08:00'

4.在 Centos6.5 下 重新编译 coreutils (version 8.2 8.25 6 7)中的 date 同样报异常

感觉跟 date 版本无关,跟系统有关。
求解。

所有测试机器的时区均一样
1216 次点击
所在节点    问与答
11 条回复
Dashit
2016-08-31 17:14:52 +08:00
你这头像。
ijustdo
2016-08-31 17:59:18 +08:00
centos 下 date -d "2015-09-03T10:26:24.045" "+%s" 你再看呢

别问我原因
nilai
2016-08-31 18:02:44 +08:00
@ijustdo -08:00 这个表示时区, 这个不能去, 更何况这个格式在其它系统像 debian ubuntu centos7 上都能运行, 只有 centos6 下不能运行。
ijustdo
2016-08-31 18:03:19 +08:00
我也郁闷了 我靠 我测试了好几台机器 真的不一样咧 还有阿里 ecs

fedora 20 表示正常 date -d "2015-09-03T10:26:24.045" "+%s" 如果 你那样也恶心了
ijustdo
2016-08-31 18:04:03 +08:00
我去掉是因为我怀疑 date 自动读取了本地系统设置的时区做参照
nilai
2016-08-31 18:11:18 +08:00
@ijustdo 我最开始怀疑是时区设置问题, 都设置成一样的时区了, 后来怀疑是 date 版本问题, 重新编译了 coreutils 的各个版本, 问题依旧。
nilai
2016-08-31 18:44:16 +08:00
@ijustdo 经测试 目前 可把 命令中的 T 替换 成空格 date -d "2015-09-03 10:26:24.045-08:00" "+%s" 在 centos6 上运行。
ijustdo
2016-08-31 19:07:13 +08:00
[root@xxxxx /]# TZ='Asia/Shanghai' date -d "2015-09-03 10:26:24.045" "+%s"
1441247184

搞定 好几个版本系统 时间戳一直
nilai
2016-09-01 09:18:27 +08:00
@ijustdo 你的测试命令少了时区信息哦。
不是
TZ='Asia/Shanghai' date -d "2015-09-03 10:26:24.045" "+%s"
应该是:
TZ='Asia/Shanghai' date -d "2015-09-03T10:26:24.045-08:00" "+%s"

然而还是报错哦。
ijustdo
2016-09-01 09:29:46 +08:00
[root@xxxxx /]# TZ='Asia/Shanghai' date -d "2015-09-03 10:26:24.045" "+%s"
这样就行了 centos 6 和其它版本都不会报错 并且是对的

因为我前面指定了时区 所以我不要 后面 -08:00 然后 你找到的 那个 T 给干掉
ijustdo
2016-09-01 09:31:56 +08:00
TZ='Asia/Shanghai' 指定强制时区 比后面 -08:00 要准

然后 centos 6 干掉那个 T 去掉 T 其它 centos 5 也可以

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/302942

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX