Рассмотрим этот простой пример
DT <- data.table::data.table(mytime = c(nanotime('2011-12-05 08:30:00.000',format ="%Y-%m-%d %H:%M:%E9S", tz ="GMT"),
nanotime('2011-12-05 08:30:00.100',format ="%Y-%m-%d %H:%M:%E9S", tz ="GMT"),
nanotime('2011-12-05 08:30:00.825',format ="%Y-%m-%d %H:%M:%E9S", tz ="GMT")))
#convert the timestamp to string
DT[, mytime_character := strftime(mytime, format = '%Y-%m-%d %H:%M:%OS3')]
> DT
mytime mytime_character
1: 2011-12-05T08:30:00.000000000+00:00 2011-12-05 03:30:00.000
2: 2011-12-05T08:30:00.100000000+00:00 2011-12-05 03:30:00.099
3: 2011-12-05T08:30:00.825000000+00:00 2011-12-05 03:30:00.825
Как видите, преобразование метки времени nanotime
в character
(с использованием strftime
) создает неправильную миллисекундную часть для второй метки времени: .099
вместо .100
К сожалению, мне нужно преобразовать свои метки времени в строку, чтобы они могли быть приняты другими языками программирования.
Есть ли способ правильно преобразовать метки времени в символы безпотеря точности?
Спасибо!