为什么 R 的 strftime return 是前一个月的午夜?
Why does R's strftime return the previous month for midnight?
这就在临界点上,属于病态的情况,却给我带来了麻烦:
> strftime(as.POSIXct('2016-07-01', tz = 'UTC'), '%m')
[1] "06"
虽然我知道现在是午夜,但似乎应该是 7 点。这是 7 个:
> strftime(as.POSIXct('2016-07-02', tz = 'UTC'), '%m')
[1] "07"
> strftime(as.POSIXct('2016-07-01'), '%m')
[1] "07"
这是怎么回事?
将时区添加到 strftime
:
strftime(as.POSIXct('2016-07-01', tz = 'UTC'), '%m', tz="UTC")
[1] "07"
解释:
您只指定了 as.POSIXct
的时区。然后你使用 strftime
而没有 指定时区,这会导致 strftime
退回到其默认值
来自?strftime
:
tz A character string specifying the time zone to be used for the conversion. System-specific (see as.POSIXlt)
如果您的系统时区不是 UTC
,可能会导致这种差异。
strftime
函数默认为您的时区,因此午夜 UTC 仍然是所有西点的前一天。
将"tz="选项添加到strftime
函数:
strftime(as.POSIXct('2016-07-01', tz = 'UTC'), '%m', tz="UTC")
[1] "07"
或使用format
函数:
format(as.POSIXct('2016-07-01', tz = 'UTC'), '%m')
[1] "07"
这就在临界点上,属于病态的情况,却给我带来了麻烦:
> strftime(as.POSIXct('2016-07-01', tz = 'UTC'), '%m')
[1] "06"
虽然我知道现在是午夜,但似乎应该是 7 点。这是 7 个:
> strftime(as.POSIXct('2016-07-02', tz = 'UTC'), '%m')
[1] "07"
> strftime(as.POSIXct('2016-07-01'), '%m')
[1] "07"
这是怎么回事?
将时区添加到 strftime
:
strftime(as.POSIXct('2016-07-01', tz = 'UTC'), '%m', tz="UTC")
[1] "07"
解释:
您只指定了 as.POSIXct
的时区。然后你使用 strftime
而没有 指定时区,这会导致 strftime
退回到其默认值
来自?strftime
:
tz A character string specifying the time zone to be used for the conversion. System-specific (see as.POSIXlt)
如果您的系统时区不是 UTC
,可能会导致这种差异。
strftime
函数默认为您的时区,因此午夜 UTC 仍然是所有西点的前一天。
将"tz="选项添加到strftime
函数:
strftime(as.POSIXct('2016-07-01', tz = 'UTC'), '%m', tz="UTC")
[1] "07"
或使用format
函数:
format(as.POSIXct('2016-07-01', tz = 'UTC'), '%m')
[1] "07"