如何将日期格式从YYYY / MM / DD更改为DD / MM / YYYY

时间:2017-09-01 15:01:52

标签: r date

我有一列日期,以character值读入(是的,它们应该是相同的):

str(df$date)

$ date : chr  "30/08/2017" "30/08/2017" "30/08/2017" "30/08/2017"

然后我将值转换为Date格式:

str(df$date)

$ date : Date, format: "2017-08-30" "2017-08-30" "2017-08-30"

问题在于,无论我选择使用哪种方法,结果日期始终为YYYY/MM/DD格式,这不是我想要的;它们应该是DD/MM/YYYY格式。

我试试:

df$date <- as.Date(df$date, format = "%d/%m/%Y")
df$date <- strptime(df$date, format = "%d/%m/%Y")
df$date <- as.POSIXct(df$date, format = "%d/%m/%Y")

它们都生成相同的格式。

我已经阅读了许多类似的Stack Overflow帖子以及一些指南,并尝试了诸如获取和设置我的系统区域设置(英国)之类的事情,并且在这方面一切都是正确的。

我哪里错了?

3 个答案:

答案 0 :(得分:2)

  

我试试:

df$date <- as.Date(df$date, format = "%d/%m/%Y")
df$date <- strptime(df$date, format = "%d/%m/%Y")
df$date <- as.POSIXct(df$date, format = "%d/%m/%Y")
     

它们都生成相同的格式。

R有两个非常相似的命名函数:strptime,它从字符串转换为Date数据; strftime,它将Dates转换为格式化字符串。更糟糕的是,这两个函数的文档结合在一起,因此很难保持其用途。在这种情况下,您需要strftime

答案 1 :(得分:1)

您还可以使用format

date = c("30/08/2017", "30/08/2017", "30/08/2017", "30/08/2017")
date <- as.Date(date, format = "%d/%m/%Y")
# > date
# [1] "2017-08-30" "2017-08-30" "2017-08-30" "2017-08-30"

date = format(date, "%m/%d/%Y")
# > date
# [1] "08/30/2017" "08/30/2017" "08/30/2017" "08/30/2017"

变成character类:

# > class(date)
# [1] "character"

答案 2 :(得分:0)

这将帮助您:

$variable = '2018/09/18';
$date = str_replace('/', '/', $variable);
echo date('d/m/Y', strtotime($date));

请检查并让我知道是否需要更多帮助。