我需要一些简单的东西,比如日期,但从1970年开始以秒为单位,而不是当前的日期、小时、分钟和秒。

日期似乎没有提供这种选择。有一个简单的方法吗?


当前回答

只是补充一下。获取任何给定日期(例如1973年10月21日)自纪元(1970年1月1日)以来的秒数。

date -d "Oct 21 1973" +%s

将秒数转换回日期

date --date @120024000

命令日期非常通用。你可以用约会做另一件很酷的事(无耻地抄袭约会——帮助)。显示下周五美国西海岸上午9点的当地时间

date --date='TZ="America/Los_Angeles" 09:00 next Fri'

更好的是,花点时间阅读手册页http://man7.org/linux/man-pages/man1/date.1.html

其他回答

这应该是有效的:

date +%s

只是补充一下。获取任何给定日期(例如1973年10月21日)自纪元(1970年1月1日)以来的秒数。

date -d "Oct 21 1973" +%s

将秒数转换回日期

date --date @120024000

命令日期非常通用。你可以用约会做另一件很酷的事(无耻地抄袭约会——帮助)。显示下周五美国西海岸上午9点的当地时间

date --date='TZ="America/Los_Angeles" 09:00 next Fri'

更好的是,花点时间阅读手册页http://man7.org/linux/man-pages/man1/date.1.html

使用这个bash脚本(my~/bin/epoch):

#!/bin/bash

# get seconds since epoch
test "x$1" == x && date +%s && exit 0

# or convert epoch seconds to date format (see "man date" for options)
EPOCH="$1"
shift
date -d @"$EPOCH" "$@"

纯bash解决方案

自bash 5.0(2019年1月7日发布)以来,您可以使用内置变量EPOCHSECONDS。

$ echo $EPOCHSECONDS
1547624774

还有包括秒分数的EPOCHREALTIME。

$ echo $EPOCHREALTIME
1547624774.371210

通过删除小数点,EPOCHREALTIME可以转换为微秒(μs)。当使用bash的内置算术((表达式))(它只能处理整数)时,这可能很有趣。

$ echo ${EPOCHREALTIME/./}
1547624774371210

在以上所有示例中,打印的时间值相等,以提高可读性。实际上,时间值会有所不同,因为每个命令都需要少量时间来执行。

对于大多数Awk实现:

awk 'BEGIN {srand(); print srand()}'