Как преобразовать дату из Unix в строку в script?
Чтобы преобразовать дату из строки в Unix, я могу использовать date --date "2012-02-13" +%s
.
Как мне сделать обратное, от времени Unix до строки?
Ответы
Ответ 1
Вы можете использовать date --date @datetime
:
[[email protected] ~]$date --date "2012-02-13" +%s
1329055200
[[email protected] ~]$date --date @1329055200
Mon Feb 13 00:00:00 EST 2012
[[email protected] ~]$date --date @1329055200 +"%Y-%m-%d"
2012-02-13
Я не знаю, где документируется "@xxxx"!
Ответ 2
Параметры команды date
зависят от вашей операционной системы.
В FreeBSD:
[[email protected] ~]$ date -r 1332468005 '+%Y-%m-%d %T'
2012-03-22 22:00:05
В Linux:
[email protected]$ date -d @1332468005 '+%Y-%m-%d %H:%M:%S'
2012-03-22 22:00:05
В других операционных системах я не знаю.
Если вам нужно решение, которое не полагается на команду date
, вы можете использовать perl или gawk, если они установлены на компьютере, который вы используете.
[email protected]$ gawk -v when=1332468005 'BEGIN{ print strftime("%Y-%m-%d %T", when); }'
2012-03-22 22:00:05
Ответ 3
Это можно сделать через awk
:
$ date --date "2012-02-13" +%s | awk '{ print strftime("%Y-%m-%d", $1); }'
2012-02-13
или любой другой инструмент, который предоставляет интерфейс для strftime()
Ответ 4
Используйте параметр [email protected]
для передачи отметки времени Unix и используйте формат в соответствии с желаемым результатом.
$ date --date "2012-02-13" +%s
1329062400
$ date [email protected] +%F
2012-02-13