我有一列日期,以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帖子以及一些指南,并尝试了诸如获取和设置我的系统区域设置(英国)之类的事情,并且在这方面一切都是正确的。
我哪里错了?
答案 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));
请检查并让我知道是否需要更多帮助。