Ответ 1
Здесь вы идете:
# date -r 123439819723 '+%m/%d/%Y:%H:%M:%S'
08/26/5881:17:48:43
На моем Mac OSX у моего bash script есть время "123439819723". Я могу преобразовать дату в человеко-читаемый формат на "date -r 123439819723", который дает мне "Пятница 26 августа 09:48:43 EST 5881".
Но я хочу, чтобы дата была в формате mm/ddd/yyyy: hh: mi: ss. Опция "date -date" не работает на моей машине.
Здесь вы идете:
# date -r 123439819723 '+%m/%d/%Y:%H:%M:%S'
08/26/5881:17:48:43
Чтобы преобразовать время эпохи UNIX с BSD date
, используйте
date -j 123439819723 -f %s
-j
не позволяет date
пытаться установить системные часы, а -f
указывает формат ввода. Вы можете добавить +<whatever>
, чтобы установить выходной формат, как в GNU date
.
из командной оболочки
[[email protected] ~]$ date -r 1474588800
Fri Sep 23 05:30:00 IST 2016
[[email protected] ~]$ date -ur 1474588800
Fri Sep 23 00:00:00 UTC 2016
[[email protected] ~]$ echo "1474588800" | xargs -I {} date -jr {} -u
Fri Sep 23 00:00:00 UTC 2016
Комбинированное решение для работы на Mac OS.
Код оболочки:
T=123439819723
D=$(date -j -f %s $(($T/1000)) '+%m/%d/%Y:%H:%M:%S').$(($T%1000))
echo "[$T] ==> [$D]"
Выход:
[123439819723] ==> [11/29/1973:11:50:19.723]
Или одна строка:
> echo 123439819723 | { read T; D=$(date -j -f %s $(($T/1000)) '+%m/%d/%Y:%H:%M:%S').$(($T%1000)); echo "[$T] ==> [$D]" }
[123439819723] ==> [11/29/1973:11:50:19.723]