简单的第一个:
-
optional = FALSE
是默认值:因此#1==#2和#4==#5
-
#6不需要解释:你需要论据
origin =
如错误状态
-
#3由于时区(
tz=
论点因此,它显示在8小时前。
现在,问题是#4和#5(与我之前所说的相同):
as.POSIXct(dates,"%Y-%m-%d %H:%M:%S",tz="Asia/Shanghai",origin="1970-01-01")
#> [1] NA NA NA NA NA NA NA NA
要了解这是如何工作的,您需要查看函数
as.POSIXct
,当使用数字调用时
x
(像本例中一样),调用方法:
as.POSIXct.numeric
.
as.POSIXct.numeric
#> function (x, tz = "", origin, ...)
#> {
#> if (missing(origin)) {
#> if (!length(x))
#> return(.POSIXct(numeric(), tz))
#> if (!any(is.finite(x)))
#> return(.POSIXct(x, tz))
#> stop("'origin' must be supplied")
#> }
#> .POSIXct(as.POSIXct(origin, tz = "GMT", ...) + x, tz)
#> }
#> <bytecode: 0x55df7f23b390>
#> <environment: namespace:base>
关注这一行:
#> .POSIXct(as.POSIXct(origin, tz = "GMT", ...) + x, tz)
特别地:
as.POSIXct(origin, tz = "GMT", ...) + x
如您所见,函数转换
origin
在datetime中,然后它对您估算的数字输入求和。你提供的每一个额外论点都属于
...
.
函数尝试转换
1970-01-01
使用您提供的格式到日期时间:
%Y-%m-%d %H:%M:%S
.
自起源以来
1970-01-01
具有格式
%Y-%m-%d
,函数无法将原点从字符串转换为POSIX,因此返回
NA
(那就是
NA
s已生成!)
当您将数字转换为POSIX时,作为参数添加的格式既不适用于输出(因为它将始终是POSIX),也不适用于输入,而是适用于
起源
因此
起源
和
format
需要匹配。
要解决您的问题,您需要使用
起源
具有格式
%Y-%m-%d%H:%m:%S
.
这样地:
as.POSIXct(dates,"%Y-%m-%d %H:%M:%S",tz="Asia/Shanghai",origin="1970-01-01 00:00:00")
#> [1] "2021-07-19 01:38:57 CST" "2021-07-19 01:38:58 CST" "2021-07-19 01:38:59 CST" "2021-07-19 01:39:00 CST"
#> [5] "2021-07-19 01:39:01 CST" "2021-07-19 01:39:02 CST" "2021-07-19 01:39:03 CST" "2021-07-19 01:39:04 CST"
或者您需要使用以下格式:
%Y-%m-%d
这样地:
as.POSIXct(dates,"%Y-%m-%d",tz="Asia/Shanghai",origin="1970-01-01")
#> [1] "2021-07-19 01:38:57 CST" "2021-07-19 01:38:58 CST" "2021-07-19 01:38:59 CST" "2021-07-19 01:39:00 CST"
#> [5] "2021-07-19 01:39:01 CST" "2021-07-19 01:39:02 CST" "2021-07-19 01:39:03 CST" "2021-07-19 01:39:04 CST"
结果等于#1和#2。