2015-04-04 5 views
0

Как преобразовать переменную даты в секундах?Как скрыть результат/bin/date "% Y-% m-% d% H:% M:% S" в секундах?

У меня есть переменная с именем CDATE определяется следующим образом:

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

CDATE пример вывода: "2012-12-12 12:12:12"

Я хотел бы преобразовать это время в секунд и сохранить его в другой переменной.

+1

Что вас Мне нужно CDATE_? Вы хотите перезаписать переменную? –

+0

Например, хранилище переменных CDATE 2012: 12: 12 12:12:12. Я хочу преобразовать этот результат в секундах и сохранить в другой переменной. –

ответ

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 
+0

Это действительно помогает мне. спасибо –

1

Если вы не платите за процессорное время, то я бы назвал date два раза, чтобы сделать его более удобным для чтения:

# get the timestamp: 
timestamp=$(date +"%s") 

# format it: 
CDATE=$(date -d @"$timestamp" +"%Y-%m-%d %H:%M:%S") 

echo "$CDATE" 
echo "$timestamp" 
1

В 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 
+0

Это не имеет значения с практической точки зрения, но две переменные содержат разные точки времени, строго говоря. –

+0

Нет, потому что второй вызов 'date' просто преобразует строку в' $ CDATE' в секунды с 1970-01-01, новая дата не генерируется (как и в вашем решении). – weibeld

+0

Er, да, я, возможно, перестала читать в середине второй строки :-) –

0

Самый простой способ:

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 
Смежные вопросы