从字符时间戳中检索日期和时间(以分钟为单位)

Retrieving day and time (in minutes) from character timestamp

我有一个字符时间戳,格式如下,后缀为 Z:

"2022-03-01T00:00:00Z"

我想检索数字形式的日期和分钟形式的时间(在上面的示例中应该 return 0)。

我尝试执行以下代码,但我的输出只检索年-月-日,而不是时间格式。

time_stamp <- as.POSIXct(participant1_data$timestamp[1], format="%Y-%m-%dT%H:%M")
str(time_stamp)


Output: POSIXct[1:1], format: "2022-03-01"

没有检索时间格式的代码有什么问题吗?

  1. 如评论中所述,使用 tz="UTC",否则“Z”== UTC(zulu)信息会丢失,另请参阅

  2. 如果时间正好是午夜,则省略输出。

as.POSIXct('2022-03-01T00:00:00Z', tz="UTC", "%Y-%m-%dT%H:%M:%OSZ")
# [1] "2022-03-01 UTC"

as.POSIXct('2022-03-01T11:11:11Z', tz="UTC", "%Y-%m-%dT%H:%M:%OSZ")
# [1] "2022-03-01 11:11:11 UTC"
  1. 您现在已经正确读入时间并得到"POSIXct"class。要从中获得不同的输出,您需要使用 strftime 将其格式化为具有所需格式的字符,这允许指定正确的时区 tz=,例如"CET".

strftime(as.POSIXct('2022-03-01T00:00:00Z', tz="UTC", "%Y-%m-%dT%H:%M:%OSZ"),
         '%F %R', tz='CET')
# [1] "2022-03-01 01:00"

strftime(as.POSIXct('2022-03-01T11:11:11Z', tz="UTC", "%Y-%m-%dT%H:%M:%OSZ"),
         '%F %R', tz='CET')
# [1] "2022-03-01 12:11"

或者如果我正确理解“天数和分钟数,你可能需要这个:

strftime(as.POSIXct('2022-03-01T11:11:11Z', tz="UTC", "%Y-%m-%dT%H:%M:%OSZ"),
         '%d %M', tz='CET')
# [1] "01 11"

在 R 控制台中键入 help('strftime') 或短 ?strftime 并阅读帮助页面以了解可能的 in/output 选项。