我可以使用 date 将日期转换为 YYYYMMDDHHMM 格式吗?

我可以使用 date 将日期转换为 YYYYMMDDHHMM 格式吗?

我的日期格式为 YYYYMMDDHHMM。例如,201607131001将是10:01 AM July 13, 2016.有什么方法可以使用该date实用程序来格式化时间戳吗?

答案1

假设您有 GNU 日期,我们需要在日期和时间之间添加一个空格,并通过-d

$ date -d "20160713 1001"
Wed Jul 13 10:01:00 EDT 2016

我们可以通过参数扩展很容易地做到这一点。例如

$ d=201607131001
$ date -d "${d%????} ${d#????????}"
Wed Jul 13 10:01:00 EDT 2016

然后,您可以使用标准+格式字符串将其设置为您想要的格式(man date解释了所有选项)。

$ d=201607131001
$ date -d "${d%????} ${d#????????}" +"%I:%M %p %B %d, %Y"
10:01 AM July 13, 2016

答案2

zsh

zmodload zsh/datetime
strftime -s t -r %Y%m%d%H%M 201607131001
LC_ALL=C strftime '%I:%M %p %B %d, %Y' $t

使用 busybox date

date -D %Y%m%d%H%M -d 201607131001 +'%I:%M %p %B %d, %Y'

使用 AT&T ast-open date

date -p %Y%m%d%H%M -d 201607131001 +'%I:%M %p %B %d, %Y'

使用BSD date

date -jf %Y%m%d%H%M +'%I:%M %p %B %d, %Y' 201607131001

ksh93

printf '%(%I:%M %p %B %d, %Y)T\n' 201607131001

相关内容