Пакетные смазывания, включающие тысячные доли секунды

Почему ymd_hms функция из возврата пакета смазочного материала R "2018-01-09 15:43:44.843 UTC" для ymd_hms('2018-01-09T15:43:44.844Z')?

Я наивно ожидал бы "2018-01-09 15:43:44.844 UTC".

ymd_hms('2018-01-09T15:43:44.822Z') возвращает "2018-01-09 15:43:44.822 UTC".

Поскольку это время по Гринвичу /UTC, я не верю, что переход на летнее время был бы фактором, и разные значения для truncated = вариант, кажется, не имеет значения.

2 ответа

Из документации ymd_hms:

ПРИМЕЧАНИЕ. Семейство функций ymd основано на strptime().

Как описано здесь, проблема заключается в том, что strptime усекает, а не округляет доли секунды. Поиграть с options(digits.secs = n) чтобы увидеть, как он обрабатывает различное количество знаков после запятой.

Я бы предпочел использовать:

format(strptime("2018-01-09T15:43:44.844Z", "%Y-%m-%dT%H:%M:%OS", tz = "EST"), format="%Y-%m-%d %H:%M:%OS3 %Z", tz = "EST") 

[1] "2018-01-09 15:43:44.844 EST"

Обратите внимание, что миллисекунды передаются в формате с использованием аргумента. %OS

Другие вопросы по тегам