如何将日期变量转换为秒?如何将结果/ bin /日期“%Y-%m-%d%H:%M:%S”转换为秒?
我定义了一个名为CDATE变量是这样的:
CDATE=$(/bin/date +"%Y-%m-%d %H:%M:%S")
CDATE输出示例:“2012年12月12日12时12分十二秒”
我想将其转换为时间秒并将其保存在另一个变量中。
如何将日期变量转换为秒?如何将结果/ bin /日期“%Y-%m-%d%H:%M:%S”转换为秒?
我定义了一个名为CDATE变量是这样的:
CDATE=$(/bin/date +"%Y-%m-%d %H:%M:%S")
CDATE输出示例:“2012年12月12日12时12分十二秒”
我想将其转换为时间秒并将其保存在另一个变量中。
x=($(date +"%Y-%m-%d %H:%M:%S %s"))
CDATE="${x[0]} ${x[1]}"
secs="${x[2]}" # seconds since 1970-01-01 00:00:00 UTC
echo $CDATE
echo $secs
输出:
2015-04-04 14:13:08 1428149588
它真的帮助我。谢谢 – 2015-04-04 12:18:51
如果不收取CPU时间的话,我会打电话date
两次,以使其更易于阅读:
# get the timestamp:
timestamp=$(date +"%s")
# format it:
CDATE=$(date -d @"$timestamp" +"%Y-%m-%d %H:%M:%S")
echo "$CDATE"
echo "$timestamp"
在Linux上:
CDATE=$(date "+%Y-%m-%d %H:%M:%S")
SECONDS=$(date -d "$CDATE" +%s)
在Mac上:
CDATE=$(date "+%Y-%m-%d %H:%M:%S")
SECONDS=$(date -j -f "%Y-%m-%d %H:%M:%S" "$CDATE" +%s)
而且,这两个变量的内容(在两种情况下):
$ echo "$CDATE"
2015-04-04 16:24:41
$ echo "$SECONDS"
1428157497
从实际的角度来看,这可能并不重要,但严格来说,这两个变量包含不同的时间点。 – 2015-04-04 14:42:08
不,因为第二次调用'date'只是将'$ CDATE'中的字符串转换为自1970-01-01以来的秒数,所以不会生成新日期(就像在您的解决方案中一样)。 – weibeld 2015-04-04 15:34:30
呃,是的,我可能已经停止阅读第二行:-) – 2015-04-04 15:46:10
最简单的方法:
source <(date +"CDATE='%Y-%m-%d %H:%M:%S' EPOCH='%s'")
例子:
[email protected]:/tmp$ source <(date +"CDATE='%Y-%m-%d %H:%M:%S' EPOCH='%s'")
[email protected]:/tmp$ echo "cdate:$CDATE epoch:$EPOCH"
cdate:2015-04-05 12:39:58 epoch:1428233998
你这是什么意思_我需要CDATE_?你想覆盖变量吗? – 2015-04-04 12:06:46
例如CDATE变量存储2012:12:12 12:12:12。我想在几秒钟内转换这个结果并存储在另一个变量中。 – 2015-04-04 12:11:52