如何将日期变量转换为秒?
我有一个名为CDATE的变量,如下所示:
CDATE=$(/bin/date +"%Y-%m-%d %H:%M:%S")
CDATE示例输出:“2012-12-12 12:12:12”
我想在几秒钟内将其转换为时间并将其保存在另一个变量中。
答案 0 :(得分:2)
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
答案 1 :(得分:2)
在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
答案 2 :(得分:1)
如果您没有为CPU时间付费,那么我会拨打date
两次以使其更具可读性:
# get the timestamp:
timestamp=$( date +"%s" )
# format it:
CDATE=$( date -d @"$timestamp" +"%Y-%m-%d %H:%M:%S" )
echo "$CDATE"
echo "$timestamp"
答案 3 :(得分:0)
最简单的方法:
source <(date +"CDATE='%Y-%m-%d %H:%M:%S' EPOCH='%s'")
示例:
tiago@dell:/tmp$ source <(date +"CDATE='%Y-%m-%d %H:%M:%S' EPOCH='%s'")
tiago@dell:/tmp$ echo "cdate:$CDATE epoch:$EPOCH"
cdate:2015-04-05 12:39:58 epoch:1428233998