Существует ли прямой способ преобразования временных меток на основе миллисекунд в MacO? - PullRequest
1 голос
/ 22 апреля 2020

EpochConverter превращает значение метки времени, например 1586775709496, в Monday, April 13, 2020 11:01:49.496 AM.

К сожалению, инструмент date в MacOs ожидает секунд , а не миллисекунд и дает неправильный год:

> date -r 1586775709496
Thu Dec  2 15:24:56 CET 52252

Этот существующий вопрос только объясняет очевидное: вы можете разделить на 1000 (вырезать последние 3 цифры), и встроенный инструмент date сработает.

Но: это не то, что я ищу. Я ищу «простой» способ превратить такие метки времени, основанные на миллисекундах, в «удобочитаемые» , включая миллисекунды. Есть ли способы добиться этого?

Ответы [ 2 ]

3 голосов
/ 22 апреля 2020

С gnu date я считаю, что это будет:

$ a=1586775709496
$ LC_ALL=C date -u --date=@"$((a/1000)).$(printf "%03d" $((a%1000)))" +"%A, %B %2d, %Y %H:%M:%S.%3N %p"
Monday, April 13, 2020 11:01:49.496 PM

%3N - это то, что поддерживает дата GNU и печатает только миллисекунды.

Я думаю, потому что последние 3 символа входные данные просто находятся на выходе, вы можете просто ввести их, где они должны быть, устраняя необходимость в %N расширение:

$ a=1586775709496;
$ LC_ALL=C date -u --date=@"$((a/1000))" +"%A, %B %2d, %Y %H:%M:%S.$(printf "%03d" $((a%1000))) %p"
3 голосов
/ 22 апреля 2020
timestamp=1586775709496
ms=$(( $timestamp % 1000 ))
echo "$(date -r  $(( $timestamp / 1000 )) +"%a, %b %d, %Y %H:%M:%S").$ms"
Mon, Apr 13, 2020 12:01:49.496

Вы можете редактировать строку формата даты, чтобы получить именно тот результат, который вам нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...