Пакетные смазывания, включающие тысячные доли секунды
Почему 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