r语言 - 将格式char语言 - 20260310的日期转换为03-10-26



我知道它可以以某种方式实现使用字符串,但想检查是否有任何简单的方法?很抱歉问了这么简单的问题

%Y%y分别表示有世纪和没有世纪的年份。

x <- "20260310"
format(strptime(x, "%Y%m%d"), "%m-%d-%y")
# [1] "03-10-26"
  1. strptime(x, "%Y%m%d")将日期字符串转换为r中的标准Date对象。
  2. format(..., "%m-%d-%y")改变其外观,输出始终是字符。

另一种可能的解决方案,基于lubridate:

library(lubridate)
library(tidyverse)
"20260310" %>% ydm %>% {str_c(day(.), month(.), str_sub(year(.), 3, 4), sep="-")}
#> [1] "3-10-26"

Try

> gsub("(\d{4})(\d{2})(\d{2})", "\2-\3-\1", "20260310")
[1] "03-10-2026"

另一个选择是chronfrom {chron} package:

x <- "20260310"
x |> chron(format = "ymd") |> chron(format = "m-d-y")
#[1] 03-10-26

结果有日期"格式。

润滑液的变化

library(lubridate)
x <- "20260310"
f <- stamp("01-10-22", orders = "%d-%Om-%y")
ymd(x) |> f()

stamp()产生一个函数,可以重复应用。

require(lubridate)
require(tidyverse)
"20260310" %>% ydm() %>% 
format("%y-%m-%d")
[1] "03-10-26"
"20260310" %>% format("%y-%m-%d") %>% ydm() %>% class()
[1] "Date"

最新更新