如何转换结果/箱/日期"%Y-%m-%d%H:%M:%S"到几秒钟?

时间:2015-04-04 12:05:01

标签: bash date environment-variables

如何将日期变量转换为秒?

我有一个名为CDATE的变量,如下所示:

CDATE=$(/bin/date +"%Y-%m-%d %H:%M:%S")

CDATE示例输出:“2012-12-12 12:12:12”

我想在几秒钟内将其转换为时间并将其保存在另一个变量中。

4 个答案:

答案 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