我的日期格式为 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