Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用lubridate的戳记日期格式选择了错误的固定格式_R_Lubridate - Fatal编程技术网

使用lubridate的戳记日期格式选择了错误的固定格式

使用lubridate的戳记日期格式选择了错误的固定格式,r,lubridate,R,Lubridate,我正在尝试使用lubridate包中的stamp格式化日期输出。我想结束格式类似于 11月1日星期日23:15 我的问题是打印未修改的月份 library(lubridate) x <- ymd_hm("2017-11-20 15:15") 但是,十一月被解释为固定文本,猜测格式使用年和小时代替小时和分钟。如果我添加orders参数,那么我可以尝试强制输入的顺序 stamp("Sunday, Nov 30, 23:15", orders="AbdHM")(x) Multiple form

我正在尝试使用
lubridate
包中的
stamp
格式化日期输出。我想结束格式类似于

11月1日星期日23:15

我的问题是打印未修改的月份

library(lubridate)
x <- ymd_hm("2017-11-20 15:15")
但是,十一月被解释为固定文本,猜测格式使用年和小时代替小时和分钟。如果我添加
orders
参数,那么我可以尝试强制输入的顺序

stamp("Sunday, Nov 30, 23:15", orders="AbdHM")(x)
Multiple formats matched: "%A, %Om %d, %H:%M"(0), "%A, %b %d, %H:%M"(1)
Using: "%A, %Om %d, %H:%M"
[1] "Monday, 11 20, 15:15"
这里的输出是正确的,除了我把月份作为数字而不是文本。请注意,
stamp
确实提供了正确的格式,但最终使用了不完全正确的格式,尽管给出了相同的匹配

如何强制
戳记
使用我提供的确切格式


[除了使用
stamp
,还有其他选择。我就是不明白上面的代码为什么不起作用]

我在上向
lubridate
软件包开发人员发布了相同的问题。事实证明,上面描述的格式化错误是一个bug,现已修复。我将在这里添加答案,因为
lubridate
的(当前)文档没有提供有关
订单
区域设置
参数的大量信息

如果您有1.6.0.9009或更高版本的
lubridate
,那么我现在可以

stamp("Sunday, Nov 30, 23:15", orders="AbdHM")(x)
Multiple formats matched: "%A, %b %d, %H:%M"(1), "%A, %Om %d, %H:%M"(0)
Using: "%A, %b %d, %H:%M"
[1] "Monday, Nov 20, 15:15"
这是需要的(请注意缩写的月份)。如果给出了区域设置或时区,则最新版本的
lubridate
有效

stamp("Sunday, November 1, 16:15", orders="ABdHM")(force_tz(x,  "Europe/Copenhagen"))
Multiple formats matched: "%A, %B %d, %H:%M"(1), "%A, %Om %d, %H:%M"(0)
Using: "%A, %B %d, %H:%M"
[1] "Monday, November 20, 15:15"
通过设置
locale
参数也可以获得正确的输出

stamp("Sunday, November 30, 23:15", "ABdHM", locale = "en_DK.utf8")

我将同样的问题发布到了上的
lubridate
包开发人员。事实证明,上面描述的格式化错误是一个bug,现已修复。我将在这里添加答案,因为
lubridate
的(当前)文档没有提供有关
订单
区域设置
参数的大量信息

如果您有1.6.0.9009或更高版本的
lubridate
,那么我现在可以

stamp("Sunday, Nov 30, 23:15", orders="AbdHM")(x)
Multiple formats matched: "%A, %b %d, %H:%M"(1), "%A, %Om %d, %H:%M"(0)
Using: "%A, %b %d, %H:%M"
[1] "Monday, Nov 20, 15:15"
这是需要的(请注意缩写的月份)。如果给出了区域设置或时区,则最新版本的
lubridate
有效

stamp("Sunday, November 1, 16:15", orders="ABdHM")(force_tz(x,  "Europe/Copenhagen"))
Multiple formats matched: "%A, %B %d, %H:%M"(1), "%A, %Om %d, %H:%M"(0)
Using: "%A, %B %d, %H:%M"
[1] "Monday, November 20, 15:15"
通过设置
locale
参数也可以获得正确的输出

stamp("Sunday, November 30, 23:15", "ABdHM", locale = "en_DK.utf8")