日付を使用して日付をYYYYMMDDHHMM形式に変換できますか?

日付を使用して日付をYYYYMMDDHHMM形式に変換できますか?

私の日付形式はYYYYMMDDHHMMです。たとえば、このユーティリティを使用してタイムスタンプをフォーマットする方法はありますか20160713100110:01 AM July 13, 2016date

答え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

関連情報