何も考えずにPOSIXct
クラスをDate
クラスに変換すると、ときどき怖いことが起こる。
a <- as.POSIXct("2016-09-23")
print(a)
# [1] "2016-09-23 JST"
as.Date(a)
# [1] "2016-09-22"
どうやらタイムゾーンの関係らしい。
as.Date(a, tz = "Japan")
# [1] "2016-09-23"
POSIXlt
クラスなら大丈夫(?)
b <- as.POSIXlt('2016-9-23')
as.Date(b)
# [1] "2016-09-23"
でも僕は怖いので一度文字列に変換する処理を挟んだりします。
as.Date(strftime(a, "%Y-%m-%d"))
[1] "2016-09-23"