R语言 如何解析毫秒?

yrefmtwq  于 2023-11-14  发布在  其他
关注(0)|答案(3)|浏览(164)

如何使用strptime或其他函数来解析R中的毫秒时间戳?

time <- "2010-01-15 13:55:23.975"
print(time)
# [1] "2010-01-15 13:55:23.975"
strptime(time, format="%Y-%m-%d %H:%M:%S.%f")
# [1] NA
strptime(time, format="%Y-%m-%d %H:%M:%S")
# [1] "2010-01-15 13:55:23"`

字符串

piok6c0g

piok6c0g1#

感谢?strptime帮助文件(将示例更改为您的值):

> z <- strptime("2010-01-15 13:55:23.975", "%Y-%m-%d %H:%M:%OS")
> z # prints without fractional seconds
[1] "2010-01-15 13:55:23 UTC"

> op <- options(digits.secs=3)
> z
[1] "2010-01-15 13:55:23.975 UTC"

> options(op) #reset options

字符串

ar5n3qh5

ar5n3qh52#

您也可以使用strptime(time, "%OSn"),其中0 <= n <= 6,而不必设置digits.secs
文档中指出“这些支持的都是依赖于操作系统的。”所以YMMV。

iszxjhcz

iszxjhcz3#

另一个不需要设置options(digits.secs=3)的方法是使用format()

format(Sys.time(), "%Y-%m-%d %H:%M:%OS3")

# alternative:
format(Sys.time(), digits = 3L)

time <- "2010-01-15 13:55:23.975"

# using strptime to convert the string
format(strptime(time, "%Y-%m-%d %H:%M:%OS"), "%Y-%m-%d %H:%M:%OS3")
format(strptime(time, "%Y-%m-%d %H:%M:%OS"), digits = 3L)

# using as.POSIXct to convert the string (under the hood also using strptime())
format(as.POSIXct(time), "%Y-%m-%d %H:%M:%OS3")
format(as.POSIXct(time), digits = 3L)

字符串
但是,关于as.POSIXct,请参阅此。

相关问题