V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
nilai
V2EX  ›  问与答

关于 date 的问题

  •  
  •   nilai · 2016-08-31 15:56:58 +08:00 · 1146 次点击
    这是一个创建于 2796 天前的主题,其中的信息可能已经有所发展或是发生改变。
    测试语句:
    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 版本无关,跟系统有关。
    求解。

    所有测试机器的时区均一样
    11 条回复    2016-09-01 09:31:56 +08:00
    Dashit
        1
    Dashit  
       2016-08-31 17:14:52 +08:00
    你这头像。
    ijustdo
        2
    ijustdo  
       2016-08-31 17:59:18 +08:00
    centos 下 date -d "2015-09-03T10:26:24.045" "+%s" 你再看呢

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

    fedora 20 表示正常 date -d "2015-09-03T10:26:24.045" "+%s" 如果 你那样也恶心了
    ijustdo
        5
    ijustdo  
       2016-08-31 18:04:03 +08:00
    我去掉是因为我怀疑 date 自动读取了本地系统设置的时区做参照
    nilai
        6
    nilai  
    OP
       2016-08-31 18:11:18 +08:00
    @ijustdo 我最开始怀疑是时区设置问题, 都设置成一样的时区了, 后来怀疑是 date 版本问题, 重新编译了 coreutils 的各个版本, 问题依旧。
    nilai
        7
    nilai  
    OP
       2016-08-31 18:44:16 +08:00
    @ijustdo 经测试 目前 可把 命令中的 T 替换 成空格 date -d "2015-09-03 10:26:24.045-08:00" "+%s" 在 centos6 上运行。
    ijustdo
        8
    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
        9
    nilai  
    OP
       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
        10
    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
        11
    ijustdo  
       2016-09-01 09:31:56 +08:00
    TZ='Asia/Shanghai' 指定强制时区 比后面 -08:00 要准

    然后 centos 6 干掉那个 T 去掉 T 其它 centos 5 也可以
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2936 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:01 · PVG 16:01 · LAX 01:01 · JFK 04:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.