Data.table: IDateTime сообщает неверную дату, если время больше 15:59 (tz = "America / Los_Angeles")

Созданный на 15 янв. 2016  ·  5Комментарии  ·  Источник: Rdatatable/data.table

IDateTime () генерирует неверную дату, если временной отрезок больше 15:59 (tz = "America / Los_Angeles")
Преобразование всех записей, которые имеют время в / после 15:59 моего часового пояса.

Подробная информация о проблеме:
http://stackoverflow.com/questions/34786887/why-does-idatetime-convert-to-the-wrong-date

Данные в файле FiveMinute.csv:
Время, максимум, минимум, открытие, закрытие, объем
13.01.2016 11: 00,4.8100,4.7875,4.8050,4.7900,543
2016.01.13 11: 05,4.7950,4.7825,4.7900,4.7925,781
13.01.2016 11: 10,4.7925,4.7750,4.7925,4.7775,2787
2016.01.13 11: 15,4.7850,4.7775,4.7800,4.7800,659
2016.01.13 17: 00,4.7800,4.7700,4.7800,4.7700,371
13.01.2016 17: 05,4.7750,4.7700,4.7700,4.7700,158
2016.01.13 17: 10,4.7675,4.7550,4.7675,4.7550 288

Сценарий R:
библиотека (data.table)
csv1 = "FiveMinute.csv"
dt = fread (csv1)
dput (dt)

as.POSIXct не меняет дату

as.POSIXct (dt $ Time)
as.POSIXct (dt $ Time, "% Y /% m /% d% H:% M", tz = "")

эти вызовы производят некорректный вывод

IDateTime (as.POSIXct (dt $ Time))
IDateTime (as.POSIXct (dt $ Time, tz = ""))
IDateTime (as.POSIXct (dt $ Time, tz = "America / Los_Angeles"))
IDateTime (as.POSIXct (dt $ Time, "% Y /% m /% d% H:% M", tz = ""))
IDateTime (as.POSIXct (dt $ Time, "% Y /% m /% d% H:% M", tz = "America / Los_Angeles"))
dput (IDateTime (as.POSIXct (dt $ Time, "% Y /% m /% d% H:% M", tz = "America / Los_Angeles")))
dput (IDateTime (as.POSIXct (dt [, Time], «% Y /% m /% d% H:% M», tz = «America / Los_Angeles»)))

Система: Win10x64 R 3.2.2 data.table 1.9.6

bug idatitime

Все 5 Комментарий

Во втором посте по проблеме № 977 дается специализация as.IDate.POSIXct которую я использую. Он будет использовать часовой пояс, указанный в POSIXct. Он также выполнит преобразование, если вы передадите аргумент tz , но обратите внимание, что в настоящее время IDateTime не передает дополнительные аргументы в as.IDate . На практике я также переопределяю IDateTime чтобы передать аргументы ... в as.IDate и as.ITime .

Мне не ясно, каковы стандарты и цели в отношении IDateTime , поэтому я не пробовал делать для этого пиар, но я думаю, что это решит вашу проблему.

Спасибо, э-мю-пи. Вы определили причину проблемы с IDateTime, с которой я столкнулся.

@MichaelChirico, как ты думаешь, ты мог бы взглянуть на это? (поскольку вы исправили некоторые проблемы / внесли улучшения в IDate / ITime ..)

@arunsrinivasan конечно, я

Оригинальный пост немного непонятен.

Минимальный пример:

as.POSIXct("2016/01/13 17:00", tz = "America/Los_Angeles")
# [1] "2016-01-13 17:00:00 PST"
IDateTime(as.POSIXct("2016/01/13 17:00", tz = "America/Los_Angeles"))
#         idate    itime
# 1: 2016-01-14 17:00:00
Была ли эта страница полезной?
0 / 5 - 0 рейтинги