代码之家  ›  专栏  ›  技术社区  ›  Joe

从日期和时间戳中提取时间

r
  •  0
  • Joe  · 技术社区  · 3 年前

    我有一个时间戳向量,只想得到小时和分钟,例如我的样子;2023-03-06T18:43:52+00:00,如果可能的话,我希望它变成18:43。我曾考虑将其拆分,删除T和+(包括)前后的所有内容,但不太确定如何使用gsub完成,这也会留下我不想在这里留下的秒数

    tstamps
    "2023-03-06T18:43:52+00:00"     "2023-03-06T18:44:45.547+00:00" "2023-03-06T18:47:04.643+00:00"
    
    1 回复  |  直到 3 年前
        1
  •  2
  •   Manoj Kumar    3 年前

    您可以使用lubridate和dplyr包来实现这一点:

    library(dplyr)
    library(lubridate)
    
    df <- data.frame(datetime = c("2023-03-06T18:43:52+00:00", "2023-03-06T12:30:00+00:00"))
    
    df <- df %>%
      mutate(time = format(ymd_hms(datetime), "%H:%M"))
    df
    

    它将返回:

                       datetime  time
    1 2023-03-06T18:43:52+00:00 18:43
    2 2023-03-06T12:30:00+00:00 12:30
    
        2
  •  0
  •   jay.sf    3 年前

    之后 sub 去掉偏移的冒号,我们可以使用 strptime() .

    strftime(strptime(sub('(.*):(.*)', '\\1\\2', x), '%FT%H:%M:%OS%z', tz='GMT'), '%H:%M')
    # [1] "18:43" "18:44" "18:47"
    

    数据:

    x <- c('2023-03-06T18:43:52+00:00', '2023-03-06T18:44:45.547+00:00', '2023-03-06T18:47:04.643+00:00')