Windows 11部分区域设置下R语言strptime解析Sep缩写失效如何解决?
区域设置导致的strptime日期解析异常问题
复现代码
library(dplyr) txt <- c('Jan 1 2026 12:00AM', 'Feb 1 2026 12:00AM', 'Mar 1 2026 12:00AM', 'Apr 1 2026 12:00AM', 'May 1 2026 12:00AM', 'Jun 1 2026 12:00AM', 'Jul 1 2026 12:00AM', 'Aug 1 2026 12:00AM', 'Sep 1 2026 12:00AM', 'Oct 1 2026 12:00AM', 'Nov 1 2026 12:00AM', 'Dec 1 2026 12:00AM') pos <- strptime(txt, '%b%d%Y%I:%M%p')
问题说明
上述代码在MX Linux、Windows 10系统中运行正常,但在Windows 11的en-NZ区域设置下,strptime无法解析九月缩写Sep,仅当使用Sept作为九月缩写时才能正常解析。该问题是Windows 11特定区域设置下的兼容性问题。
解决方案
使用lubridate包可规避此问题,它对Sep和Sept两种九月缩写均能正常解析,不受目标区域设置影响。示例代码如下:
library(lubridate) txt <- c('Jan 1 2026 12:00AM', 'Feb 1 2026 12:00AM', 'Mar 1 2026 12:00AM', 'Apr 1 2026 12:00AM', 'May 1 2026 12:00AM', 'Jun 1 2026 12:00AM', 'Jul 1 2026 12:00AM', 'Aug 1 2026 12:00AM', 'Sep 1 2026 12:00AM', 'Oct 1 2026 12:00AM', 'Nov 1 2026 12:00AM', 'Dec 1 2026 12:00AM') pos <- mdy_hm(txt)
内容的提问来源于stack exchange,提问作者Sue Street
相关产品推荐
相关产品推荐

