在R中将日期列表转换为另一种格式?

在R中将日期列表转换为另一种格式?,r,lapply,lubridate,R,Lapply,Lubridate,我试图将这些列表更改为RJDBC包中使用的另一种格式。Oracle的语法只接受“2018年10月1日”格式的日期。但是,该列表的输出格式为“2018-10-01” 如何将这些列表转换为以下格式:2018年10月1日 begin <- ymd("2017-01-01")+ months(0:21) last <- ymd("2017-02-01")+ months(0:22)-days(1) begin您可以使用格式,在toupper中包装大写字母,并使用trimws来修

我试图将这些列表更改为RJDBC包中使用的另一种格式。Oracle的语法只接受“2018年10月1日”格式的日期。但是,该列表的输出格式为“2018-10-01”

如何将这些列表转换为以下格式:2018年10月1日

   begin <- ymd("2017-01-01")+ months(0:21)
   last <- ymd("2017-02-01")+ months(0:22)-days(1)

begin您可以使用
格式
,在
toupper
中包装大写字母,并使用
trimws
来修剪
%e
创建的空白。我在
格式中使用了
%e
,因为它是以十进制数字(1-31)表示的月份的一天,前导空格表示一位数字。然后我们只需删除后面的空白

trimws(toupper(format(begin, "%e-%b-%y")))
#  [1] "1-JAN-17" "1-FEB-17" "1-MAR-17" "1-APR-17" "1-MAY-17" "1-JUN-17"
#  [7] "1-JUL-17" "1-AUG-17" "1-SEP-17" "1-OCT-17" "1-NOV-17" "1-DEC-17"
# [13] "1-JAN-18" "1-FEB-18" "1-MAR-18" "1-APR-18" "1-MAY-18" "1-JUN-18"
# [19] "1-JUL-18" "1-AUG-18" "1-SEP-18" "1-OCT-18"
对于
last
向量,可以省略
trimws
,因为
%e
不会为两位数生成任何空格

toupper(format(last, "%e-%b-%y"))
#  [1] "31-JAN-17" "28-FEB-17" "31-MAR-17" "30-APR-17" "31-MAY-17"
#  [6] "30-JUN-17" "31-JUL-17" "31-AUG-17" "30-SEP-17" "31-OCT-17"
# [11] "30-NOV-17" "31-DEC-17" "31-JAN-18" "28-FEB-18" "31-MAR-18"
# [16] "30-APR-18" "31-MAY-18" "30-JUN-18" "31-JUL-18" "31-AUG-18"
# [21] "30-SEP-18" "31-OCT-18" "30-NOV-18"