说,将日期转换为一种格式的最快方法是什么
2008-06-01
到另一种格式的日期,比如说
2008 年 6 月 1 日星期日
重要的一点实际上是“太阳”,因为根据日期名称,我可能需要摆弄其他东西——以一种不确定的方式。我正在运行 GNU bash,版本3.2.17(1)-release (i386-apple-darwin9.0)
.
[背景:我想从命令行执行它的原因是我真正想要的是将其写入TextMate命令......这是我必须在textMate中一直做的一项烦人的任务。]
说,将日期转换为一种格式的最快方法是什么
2008-06-01
到另一种格式的日期,比如说
2008 年 6 月 1 日星期日
重要的一点实际上是“太阳”,因为根据日期名称,我可能需要摆弄其他东西——以一种不确定的方式。我正在运行 GNU bash,版本3.2.17(1)-release (i386-apple-darwin9.0)
.
[背景:我想从命令行执行它的原因是我真正想要的是将其写入TextMate命令......这是我必须在textMate中一直做的一项烦人的任务。]
$ 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 来避免本地化问题。
阅读date(1)手册页会发现:
-j 不要尝试设置日期。这允许您使用 -f 标志 除了将一种日期格式转换为另一种日期格式的 + 选项。
谢谢那个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
谢谢。
date -d yyyy-mm-dd
如果你想更多地控制格式,你也可以像这样添加它:
date -d yyyy-mm-dd +%a
只是得到你说你想要的太阳部分。
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.
如果您只是想获得星期几,请不要尝试匹配字符串。当语言环境更改时,它会中断。%u
格式为您提供日期编号:
$ date -j -f "%Y-%m-%d" "2008-01-03" +"%u"
4
事实上,那是一个星期四。您可以使用该数字来索引程序中的数组,或者仅使用该数字本身。
有关详细信息,请参阅日期和 strftime 手册页。但是,OS X 上的日期手册页是错误的,因为它没有列出这些有效的选项。