私の日付形式は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
ビジーボックスの使用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