Возможная ошибка в `difftime` - вычисление разницы в дате и времени в R

Я рассчитываю разницу между двумя датами, используя difftime функция в R и получить неправильный ответ, вот код

t1 <- as.POSIXct("7/18/2005 8:30:00", format = "%m/%d/%Y %H:%M:%S")
t2 <- as.POSIXct("10/30/2005 8:30:00", format = "%m/%d/%Y %H:%M:%S")
difftime(t2,t1,units = "hours") 

Я получаю следующий ответ

Time difference of 2497 hours

что я знаю, это неправильно, так как оба t1 а также t2 имеют те же time значение, поэтому они должны быть разделены точным кратным 24 часам (т. е. правильный ответ - 2496 часов, а не 2497 - также подтверждается другими инструментами, такими как Excel, листы Google).

Любая идея, почему R дает мне неправильный результат?

1 ответ

Решение

Вы получили один час благодаря переходу на летнее время (30.10.2005, воскресенье, 02:00:00)

Вы можете изменить это, выполнив as.POSIXct(..., tz = 'UTC') в каком часовом поясе он должен быть; UTC, чтобы сделать вещи однозначными и избежать изменений DST.

Если вы хотите изменить часовой пояс по умолчанию для всех as.POSIXct() звонки, см. Как изменить часовой пояс по умолчанию в R?, что предполагает:

  • [как команда R] Sys.setenv(TZ='GMT') или же
  • [R установочный файл] редактировать TZ="UTC"в Renviron.site
Другие вопросы по тегам