【问题标题】:Unix string to date conversion, what is wrongUnix字符串到日期的转换,出了什么问题
【发布时间】:2020-12-05 10:00:10
【问题描述】:

我知道这个话题已经出现了,一些帖子给出了一个很好的总结,就像这里的那个:Convert string to date in bash。不过,我遇到了一个问题,下面给出了一个我应该解决的例子:

date +'%d.%m.%y' 可以正常工作并返回05.12.20,但我应该用来将字符串转换为日期的逆运算失败:

date -d "05.12.20" +'%d.%m.%y'
date: invalid date ‘05.12.20’

这正是我所需要的。我还检查了https://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/ 的 Unix 日期格式,但它似乎与此一致。问题是什么?我还尝试提供 CEST 等时区指标,但它们并没有解决问题。

【问题讨论】:

    标签: date unix


    【解决方案1】:

    试试

    date -d "05-12-20" +'%d.%m.%y'
    

    UNIX date 需要 -/ 作为日期分隔符。

    但是,如果您的输入确实必须采用“05.12.20”格式(即使用.),那么您可以将其转换为UNIX date 所期望的格式:

    date -d `echo "05.12.20" | sed 's/\./-/g'` +'%d.%m.%y'
    

    【讨论】:

    • 我的分隔符是点,所以问题是如何让它与点一起工作。无论如何,感谢您的回复和阅读帖子!
    • 好的,当然,感谢您的澄清。我已经用可能对您有用的替代方法更新了答案。
    • 关于“UNIX”的警告。 date 还可以解码空格和逗号(如手册页中的示例)“以及其他需要在手册页中描述的格式”。注意-d 也不兼容 POSIX(Mac 有 -f 来处理输入格式,但不是 GNU 日期)
    猜你喜欢
    • 2011-03-21
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 2017-03-15
    • 2014-09-21
    相关资源
    最近更新 更多