在西班牙语语言环境中获取 as.Date 的缩写月份格式的 NA

Getting an NA with abbreviated month format for as.Date in Spanish locale

我的课程是西班牙语。当我使用包含完整月份名称 (%B) 的格式时,我会得到正确的日期:

as.Date("01-Febrero-2021", format = "%d-%B-%Y")
# [1] "2021-02-01"

但是,当我尝试使用缩写月份 (%b) 时,我得到一个“NA”:

as.Date("01-Feb-2021", format = "%d-%b-%Y")
# [1] NA

as.Date("01-feb-2021", format = "%d-%b-%Y")
# [1] NA

as.Date("01-FEB-2021", format = "%d-%b-%Y")
# [1] NA

我做错了什么?

感谢 G. Grothendieck 的回答,我可以让它工作:

Sys.getlocale("LC_TIME")
# [1] "Spanish_Argentina.1252"

Sys.Date上使用format检查缩写月份时,发现月份是用句号写的:

format(Sys.Date(), "%b")
# [1] "feb."

尝试解析一个字符串,这次用句点:

as.Date("01-feb.-2021", format = "%d-%b-%Y")
# [1] "2021-02-01"

有效!

对我有用。确保您实际上位于西班牙语言环境中。 (我在 Windows 上,它在其他平台上的工作方式可能有所不同。)

Sys.setlocale("LC_TIME", "English")
## [1] "English_United States.1252"
Sys.getlocale("LC_TIME")
## [1] "English_United States.1252"

format(Sys.Date(), "%b")
## [1] "Feb"

现在改为西班牙语:

Sys.setlocale("LC_TIME", "Spanish")
## [1] "Spanish_Spain.1252"
Sys.getlocale("LC_TIME")
## [1] "Spanish_Spain.1252"

format(Sys.Date(), "%b")
## [1] "feb"

as.Date("01-feb-2021", format="%d-%b-%Y")
## [1] "2021-02-01"
as.Date("01-Feb-2021", format="%d-%b-%Y")
## [1] "2021-02-01"