Data.table: IDateTime melaporkan tanggal yang salah jika waktu lebih dari 15:59 (tz="America/Los_Angeles")

Dibuat pada 15 Jan 2016  ·  5Komentar  ·  Sumber: Rdatatable/data.table

IDateTime() menghasilkan tanggal yang salah jika porsi waktu lebih besar dari 15:59 (tz="America/Los_Angeles")
Konversi semua catatan yang memiliki waktu pada / setelah 15:59 dari zona waktu saya.

Detail masalah di:
http://stackoverflow.com/questions/34786887/why-does-idatetime-convert-to-the-wrong-date

Data dalam file FiveMinute.csv:
Waktu,Tinggi,Rendah,Buka,Tutup,Vol
2016/01/13 11:00,4.8100,4.7875.4.8050,4.7900.543
2016/01/13 11:05,4.7950,4.782,4.7900,4.7925.781
2016/01/13 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
2016/01/13 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

Skrip R:
perpustakaan(data.tabel)
csv1 = "Lima Menit.csv"
dt = ketakutan (csv1)
dput(dt)

as.POSIXct tidak mengubah tanggal

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

panggilan ini menghasilkan output yang salah produce

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

Sistem: Win10x64 R 3.2.2 data.tabel 1.9.6

bug idatitime

Semua 5 komentar

Postingan kedua pada issue #977 memberikan spesialisasi as.IDate.POSIXct yang saya gunakan. Ini akan menggunakan zona waktu yang ditentukan oleh POSIXct. Itu juga akan melakukan konversi jika Anda meneruskan argumen tz , tetapi perhatikan bahwa saat ini IDateTime tidak meneruskan argumen tambahan ke as.IDate . Dalam praktiknya, saya juga mendefinisikan ulang IDateTime untuk meneruskan argumen ... ke as.IDate dan as.ITime .

Tidak jelas bagi saya apa standar dan tujuan sekitar IDateTime , jadi saya belum mencoba membuat PR untuk ini, tetapi saya pikir itu akan mengatasi masalah Anda.

Terima kasih, e-mu-pi. Anda telah mengidentifikasi penyebab masalah dengan IDateTime yang saya alami.

@MichaelChirico apakah Anda pikir Anda bisa melihat ini? (karena Anda telah memperbaiki beberapa masalah / membuat peningkatan dengan IDate / ITime ..)

@arunsrinivasan yakin, saya akan memasukkannya ke daftar tugas saya.

Postingan asli agak kurang jelas.

Contoh minimal:

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
Apakah halaman ini membantu?
0 / 5 - 0 peringkat