Unix タイムスタンプを日付に変換するシェル コマンドまたはスクリプトが必要です。入力は、最初のパラメーターまたは stdin のいずれかから取得できるため、次の使用パターンが可能です。
ts2date 1267619929
と
echo 1267619929 | ts2date
どちらのコマンドも「Wed Mar 3 13:38:49 2010」を出力するはずです。
Unix タイムスタンプを日付に変換するシェル コマンドまたはスクリプトが必要です。入力は、最初のパラメーターまたは stdin のいずれかから取得できるため、次の使用パターンが可能です。
ts2date 1267619929
と
echo 1267619929 | ts2date
どちらのコマンドも「Wed Mar 3 13:38:49 2010」を出力するはずです。
Linux などのGNU Coreutils >= 5.3.0を搭載したシステムでは、以下を使用できます。
date -d @1267619929
date -r <number>
Mac OS Xで動作します。
このバージョンはchiborg の answerに似ていますが、外部tty
とcat
. を使用しますdate
が、同じように簡単に使用できますgawk
。シバンを変更して、二重角かっこを単一のものに置き換えることができます。これもsh
.
#!/bin/bash
LANG=C
if [[ -z "$1" ]]
then
if [[ -p /dev/stdin ]] # input from a pipe
then
read -r p
else
echo "No timestamp given." >&2
exit
fi
else
p=$1
fi
date -d "@$p" +%c
たとえば、GNU date を使用できます。
$ sec=1267619929
$ date -d "UTC 1970-01-01 $sec secs"
また
$ date -ud @1267619929
次の単純な awk スクリプトを使用できます。
#!/bin/gawk -f
{ print strftime("%c", $0); }
使用例:
$ echo '1098181096' | ./a.awk
Tue 19 Oct 2004 03:18:16 AM PDT
$
この回答では、Dennis Williamson の回答をコピーし、わずかに変更して、多くのタイムスタンプの列をスクリプトにパイプするときに大幅な速度向上を可能にします。たとえば、私のマシンで xargs -n1 を使用して 1000 のタイムスタンプを元のスクリプトにパイプすると、6.929 秒かかりましたが、この変更されたバージョンでは 0.027 秒かかりました。
#!/bin/bash
LANG=C
if [[ -z "$1" ]]
then
if [[ -p /dev/stdin ]] # input from a pipe
then
cat - | gawk '{ print strftime("%c", $1); }'
else
echo "No timestamp given." >&2
exit
fi
else
date -d @$1 +%c
fi
私はこれを自分で行うスクリプトを書きました:
#!/bin/bash
LANG=C
if [ -z "$1" ]; then
if [ "$(tty)" = "not a tty" ]; then
p=`cat`;
else
echo "No timestamp given."
exit
fi
else
p=$1
fi
echo $p | gawk '{ print strftime("%c", $0); }'
PHPで
$unix_time = 1256571985;
echo date("Y-m-d H:i:s",$unix_time)