web-dev-qa-db-ja.com

AIXでUnixタイムスタンプを人間が読める形式に変換する

UNIXタイムスタンプ(1970年からの秒数、たとえば1381260225は2013年10月8日火曜日19:23:45 GMT)を標準の人間が読める形式に変換する必要があります。

グーグルでいくつかの回答を得ることができましたが、Linuxを使用していないため、それらは私にとって適切な解決策ではありません。ksh88で AIX 6.1 マシンを使用します。 AIXにはGNUユーティリティがありません。

4
ramp

Linuxを使用している場合は、次のように簡単に使用できます。

date -d @1381260225

または、gawkを使用することもできます。

echo "1381260225" | gawk '{print strftime("%c",$1)}'

またはPython:

python -c "import datetime; print  datetime.datetime.fromtimestamp(1381865497)"

またはPerl:

Perl -e 'print(scalar(localtime(1381865497)), "\n";'

ただし、これらのソリューションは、AIXの標準インストールでは利用できません。これらすべてのツール(GNU coreutils、GNU awk、Perl、Python))は、 Linuxアプリケーション用のAIXツールボックス の一部として個別のパッケージとして入手できます。

4
Rahul Patil

おそらくPerlにフォールバックできます。

Perl -MPOSIX=strftime -e 'print strftime("%Y-%m-%d %T", localtime($ARGV[0])), "\n"' 1381260225
2013-10-08 15:23:45
3
glenn jackman
# echo 1381260225 | python -c 'import sys; import time; print time.ctime( float( sys.stdin.read() ) )'
Wed Oct  9 02:23:45 2013

AIXにはksh93があるので、

  • 現地時間(ここではイギリス本土):

    $ ksh93 -c 'printf "%(%Y-%m-%d %T %z)T\n" "#$1"' ksh93 1381260225
    2013-10-08 20:23:45 +0100
    
  • GMT/UTC

    $ TZ=GMT0 ksh93 -c 'printf "%(%Y-%m-%d %T %Z)T\n" "#$1"' ksh93 1381260225
    2013-10-08 19:23:45 GMT
    
1

もう少し磨きをかける:

echo 1397028688|Perl -l12ne 'print scalar localtime $_'
Wed Apr  9 09:31:28 2014
1
konlux