2013-05-01 4 views
26

Почему дата конвертируется в неправильное время?Bash конвертировать эпоху на сегодняшний день, показывая неправильное время

result=$(ls /path/to/file/File.*) 
#/path/to/file/File.1361234760790 

currentIndexTime=${result##*.} 
echo "$currentIndexTime" 
#1361234760790 

date [email protected]"$currentIndexTime" 
#Tue 24 Oct 45105 10:53:10 PM GMT 
+1

1361234760790/(60 * 60 * 24 * 365) = 43164,47 лет – perreal

+0

Не знаете, что это объясняет? – bobbyrne01

+1

Примерно 43164 + 1970 ~ = 45105 (43135,8 + 1970, чтобы быть более точным), поэтому дата правильная – perreal

ответ

63

Эта конкретная метка времени находится в миллисекундах с эпохи, а не в стандартных секундах с эпохи. Деление на 1000:

$ date -d @1361234760.790 
Mon Feb 18 17:46:00 MST 2013 
+0

пятно на, спасибо! – bobbyrne01

+0

спасибо. Мне также было интересно, почему он показывал неправильную эпоху. –

+0

Да, это связано с меткой времени в миллисекундах. Я также проверил здесь http://epochconvert.com и получаю правильный результат ** Вторник, 19 февраля 2013 года, 12:46:00 GMT GMT ** – Laeeq

2

Вы можете использовать расширение Баша арифметического выполнить деление:

date -d @$((value/1000)) 

Обратите внимание, что «value» является переменным Башем с $ быть необязательными; то есть $value или value.

Смежные вопросы