我需要将unix时间戳(自1970年以来的秒数,例如1381260225是Tue Oct 8 19:23:45 GMT 2013)转换为标准的人类可读格式。
我可以通过谷歌搜索得到一些答案,但这些对我来说不是合适的解决方案,因为我不使用 Linux,我使用操作系统6.1ksh88 的机器。AIX 没有 GNU 实用程序。
答案1
你也许可以退回到 Perl:
perl -MPOSIX=strftime -e 'print strftime("%Y-%m-%d %T", localtime($ARGV[0])), "\n"' 1381260225
2013-10-08 15:23:45
答案2
如果您使用的是 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 工具箱。
答案3
# echo 1381260225 | python -c 'import sys; import time; print time.ctime( float( sys.stdin.read() ) )'
Wed Oct 9 02:23:45 2013
答案4
AIX 有 ksh93,因此:
当地时间(此处为英国大陆时间):
$ ksh93 -c 'printf "%(%Y-%m-%d %T %z)T\n" "#$1"' ksh93 1381260225 2013-10-08 20:23:45 +0100
格林尼治标准时间/世界标准时间
$ TZ=GMT0 ksh93 -c 'printf "%(%Y-%m-%d %T %Z)T\n" "#$1"' ksh93 1381260225 2013-10-08 19:23:45 GMT