【问题标题】:How can I change the format of a date from the command line?如何从命令行更改日期格式?
【发布时间】:2010-09-21 17:09:46
【问题描述】:

将日期转换为一种格式的最快方法是什么

2008-06-01

到另一种格式的日期,比如说

2008 年 6 月 1 日星期日

重要的一点实际上是“太阳”,因为根据日期名称,我可能需要摆弄其他东西 - 以一种不确定的方式。我正在运行 GNU bash,版本 3.2.17(1)-release (i386-apple-darwin9.0)

[背景:我想从命令行执行此操作的原因是,我真正想要的是将其写入 TextMate 命令……这是我必须在 textMate 中一直执行的一项烦人的任务。 ]

【问题讨论】:

    标签: command-line date format


    【解决方案1】:
    $ date -d '2005-06-30' +'%a %F'
    Thu 2005-06-30
    

    有关其他格式选项,请参阅man date

    此选项在 Linux 上可用,但在 Darwin 上不可用。在 Darwin 中,您可以改用以下语法:

    date -j -f "%Y-%m-%d" 2006-06-30 +"%a %F"
    

    -f 参数指定输入格式,+ 参数指定输出格式。

    正如下面另一张海报所指出的,您最好使用 %u(星期几)而不是 %a 来避免本地化问题。

    【讨论】:

      【解决方案2】:

      阅读 date(1) 手册页会发现:

      -j 不要尝试设置日期。这允许您使用 -f 标志
           除了用于将一种日期格式转换为另一种日期格式的 + 选项。

      【讨论】:

      • 实际上,在 OS X 上,您不会在 date(1) 手册页中看到它。
      • 认真的吗?评论系统使用的标记与答案不同?
      • 嗯,Apple 的在线手册页与他们安装的手册页不同。我也注意到其他工具也是如此。
      【解决方案3】:

      感谢您的 sgm。因此,我可以回来参考它 -

      date -j -f "%Y-%m-%d" "2008-01-03" +"%a%e %b %Y"
                  ^               ^        ^
                  parse using     |        output using
                  this format     |        this format
                                  |
                             date expressed in
                             parsing format
      
      Thu 3 Jan 2008
      

      谢谢。

      【讨论】:

        【解决方案4】:
        date -d yyyy-mm-dd
        

        如果你想更多地控制格式,你也可以这样添加:

        date -d yyyy-mm-dd +%a
        

        只是得到你说你想要的太阳部分。

        【讨论】:

        • 对不起 - 我只是得到一个使用错误。运行 GNU bash,版本 3.2.17(1)-release (i386-apple-darwin9.0)
        • 这适用于我的 Debian 机器。显然,在 Mac 上并非如此。对不起。
        【解决方案5】:
        date -d ... 
        

        似乎没有削减它,因为我收到了一个使用错误:

        usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
                    [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
        

        我正在运行 GNU bash,版本 3.2.17(1)-release (i386-apple-darwin9.0),据此人所知, date -d 仅用于

        -d dst  Set the kernel's value for daylight saving time.  If dst is non-
                 zero, future calls to gettimeofday(2) will return a non-zero for
                 tz_dsttime.
        

        【讨论】:

          【解决方案6】:

          如果您只想获取星期几,请不要尝试匹配字符串。当语言环境更改时,它会中断。 %u 格式为您提供日期编号:

           $ date -j -f "%Y-%m-%d" "2008-01-03" +"%u"
           4
          

          确实,那是一个星期四。您可以使用该数字来索引程序中的数组,或者仅使用该数字本身。

          有关详细信息,请参阅日期和 strftime 手册页。不过,OS X 上的日期手册页是错误的,因为它没有列出这些有效的选项。

          【讨论】:

            猜你喜欢
            • 2016-01-26
            • 1970-01-01
            • 2014-02-15
            • 2021-07-09
            • 1970-01-01
            • 1970-01-01
            • 2018-10-28
            • 2013-11-02
            相关资源
            最近更新 更多