#1 楼
在* BSD上:date -r 1234567890
在Linux上(特别是GNU coreutils≥5.3):
date -d @1234567890
使用旧版本的GNU date,您可以计算与UTC时期的相对差异:
date -d '1970-01-01 UTC + 1234567890 seconds'
如果需要可移植性,那您就不走运了。您只能使用POSIX shell命令(无需自己进行计算)进行格式化的时间就是当前时间。实际上,经常可以使用Perl:
perl -le 'print scalar localtime $ARGV[0]' 1234567890
#2 楼
date -d @1190000000
用您的纪元替换1190000000 评论
假设是GNU日期。
–吉尔斯'所以-不再是邪恶的'
2010-10-11 18:14
这在HP-UX上不起作用。
–saulius2
20 Sep 3 '20 at 6:51
#3 楼
如果纪元时间是毫秒而不是秒,请先删除最后三位数字,然后再传递给date -d
:$ date -d @1455086371603
Tue Nov 7 02:46:43 PST 48079 #Incorrect
这将提供错误的数据。删除最后三位数字。
$ date -d @1455086371
Tue Feb 9 22:39:31 PST 2016 #Correct after removing the last three digits. You may remove and round off the last digit too.
评论
哪些实用程序打印的时间包括毫秒(不带点)?
–user79743
16年2月10日在8:35
我已经看到,使用脚本工具时,WebLogic Application Server大多数返回的数据时间值以毫秒为单位,没有点。例如,lastSuccessfulConnectionUse = 1455086371603
– KnockTurnAl
16年2月10日在8:49
我懂了。该页面确认Raw Time Value时间戳(以毫秒为单位)。谢谢。
–user79743
16年2月10日在10:11
Atlassian工具将其时间戳记为以毫秒为单位的纪元时间。
– Br.Bill
19年3月7日在21:09
这个答案节省了我很多时间。谢谢!
–董
20-2-16在22:37
#4 楼
$ echo 1190000000 | perl -pe 's/(\d+)/localtime()/e'
Sun Sep 16 20:33:20 2007
对于那些在日志文件中使用纪元时间的应用程序来说,它可以派上用场:
$ tail -f /var/log/nagios/nagios.log | perl -pe 's/(\d+)/localtime()/e'
[Thu May 13 10:15:46 2010] EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;HOSTA;check_raid;0;check_raid.pl: OK (Unit 0 on Controller 0 is OK)
#5 楼
使用bash-4.2
或更高版本:printf '%(%F %T)T\n' 1234567890
(其中
%F %T
是strftime()
类型的格式)该语法源自
ksh93
。 > 但是在
ksh93
中,该参数被视为日期表达式,其中支持各种且几乎未记录的格式。对于Unix时代,
ksh93
中的语法为:printf '%(%F %T)T\n' '#1234567890'
ksh93
似乎在时区使用自己的算法,可能会出错。例如,在英国,1970年全年都是夏季,但是:$ TZ=Europe/London bash -c 'printf "%(%c)T\n" 0'
Thu 01 Jan 1970 01:00:00 BST
$ TZ=Europe/London ksh93 -c 'printf "%(%c)T\n" "#0"'
Thu Jan 1 00:00:00 1970
评论
这实际上适用于HP-UX。谢谢!
–saulius2
20-09-3在7:18
#6 楼
使用GNUdate
的自定义格式:date -d @1234567890 +'%Y-%m-%d %H:%M:%S'
,或者使用GNU
awk
的自定义格式:awk 'BEGIN { print strftime("%Y-%m-%d %H:%M:%S", 1234567890); }'
链接的SO问题:https ://stackoverflow.com/questions/3249827/convert-from-unixtime-at-command-line
评论
仅适用于GNU日期和GNU awk。 awk和nawk都不支持strftime。
–user14755
2014年7月28日,下午3:56
#7 楼
我经常使用的两个是:$ perl -leprint\ scalar\ localtime\ 1234567890
Sat Feb 14 00:31:30 2009
和
$ tclsh
% clock format 1234567890
Sa Feb 14 00:31:30 CET 2009
#8 楼
使用zsh
可以使用内置的strftime
:strftime format epochtime Output the date denoted by epochtime in the format specified.
例如
zmodload zsh/datetime
strftime '%A, %d %b %Y' 1234567890
Friday, 13 Feb 2009
还有
dateconv
中的dateutils
:dateconv -i '%s' -f '%A, %d %b %Y' 1234567890
Friday, 13 Feb 2009
请记住
dateutils
工具默认为UTC
(添加-z your/timezone
如果需要)。评论
HP-UX上似乎没有dateutils。
–saulius2
20 Sep 3 '20 at 7:10
#9 楼
您还可以使用一些C程序以shell可以直接解析的格式打印日期时间。用法:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int main(int argc, char * argv[]) {
if (argc==1) {
return 1;
}
struct tm input_tm;
char * formatStr = "YEAR=%Y\nMON=%m\nDAY=%d\nHOUR=%H\nMIN=%M\nSEC=%S";
size_t formatSize = strlen(formatStr) + 2;
char * output = (char *)malloc(sizeof(char)*formatSize);
strptime(argv[1],"%s",&input_tm);
strftime(output, formatSize, formatStr, &input_tm);
printf("%s\n",output);
free(output);
return 0;
}
评论
在HP-UX上不起作用:./a.out 1599099168 YEAR = 1901 MON = 03 DAY = 00 HOUR = 2130568304 MIN =
–saulius2
20-09-3在7:16
#10 楼
没有一点node.js就不是真正的解决方案:epoch2date(){
node -p "new Date()"
}
将其添加到
~/.bash_aliases
并确保其源于~/.bashrc
并带有. ~/.bash_aliases
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
要在系统上获取节点,请转至http://nvm.sh并运行curl命令。它将安装节点版本管理器(nvm),使您可以切换节点的版本。只需键入
nvm ls-remote
并选择一个版本到nvm install <version>
。评论
node.js是否可以在HP-UX上运行?似乎没有:github.com/playnodeconf/ama/issues/10#issuecomment-211250773
–saulius2
20年9月3日,下午6:55
#11 楼
在PowerShell中:(([System.DateTimeOffset]::FromUnixTimeMilliSeconds($unixtime)).DateTime).ToString("s")
评论
此技术正在使用Microsoft .NET。 OP似乎没有在寻找MS解决方案。
–user2320464
19-09-20在20:40
审阅者:PowerShell在Linux上可用;-)。
–斯蒂芬·基特(Stephen Kitt)
19-10-23在13:04
@StephenKitt,但是PowerShell可以在HP-UX上运行吗?似乎没有:reddit.com/r/PowerShell/comments/8cx8dp/…。这是Unix。
–saulius2
20年9月3日在6:58
通过这种方式@ saulius2,Unix.SE的大部分内容都是无效的,因为可以在不适用的Unix系统中找到它。这是Unix&Linux Stack Exchange。
–斯蒂芬·基特(Stephen Kitt)
20 Sep 4'6:54
@StephenKitt,也许是这样,我没有对问题的质量进行任何研究。但是仅通过查看此页面的右侧,我就会看到其中三个正在询问特定的操作系统:unix.stackexchange.com/questions/86507/…unix.stackexchange.com/questions/96189/…unix.stackexchange。 com / questions / 434844 /…
–saulius2
20-09-5在6:15
评论
对于缺少可移植性的评论+1(为什么POSIX规范不包含这样做的方法?grr)
–理查德·汉森(Richard Hansen)
2012年2月1日在22:50
@在-d @ 1234567890中是什么意思?约会没有提及...
–克里斯·马克尔(Chris Markle)
13年1月14日在21:10
@ChrisMarkle GNU手册页通常非常不完整。 “日期字符串格式比这里容易记录的要复杂,但是在信息文档中有完整的说明。”智慧:gnu.org/software/coreutils/manual/html_node/…
–吉尔斯'所以-不再是邪恶的'
13年1月14日在21:56
信息日期非常完整。自大纪元以来28.9秒的条目详细说明了@timestamp。
–user79743
16年2月10日在8:31
在管道中的Linux中:date +'%s'| xargs -I n date -d @n
–伊万·奥盖(Ivan Ogai)
16年8月12日在13:08