Ruby strftime:Day无前导零,%e不工作

Ruby strftime:Day无前导零,%e不工作,ruby,Ruby,我正在尝试将日期格式化为不带前导零的日期 date_time.strftime("%d/%m/%y") result: 04/01/11 对于%d,它可以正常工作,但对于前导零 date_time.strftime("%d/%m/%y") result: 04/01/11 我在谷歌上搜索发现我应该使用%e而不是%d,但执行以下操作会得到一个空字符串 date_time.strftime("%e/%m/%y") result: 这与Ruby的版本有关吗?我正在Windows计算机上使用

我正在尝试将日期格式化为不带前导零的日期

date_time.strftime("%d/%m/%y")
result: 04/01/11 
对于%d,它可以正常工作,但对于前导零

date_time.strftime("%d/%m/%y")
result: 04/01/11 
我在谷歌上搜索发现我应该使用%e而不是%d,但执行以下操作会得到一个空字符串

date_time.strftime("%e/%m/%y")
result: 
这与Ruby的版本有关吗?我正在Windows计算机上使用v1.8.7。
更重要的是,有没有其他方法可以完成一天而不导致零(比gsub更方便)?

我以前遇到过Windows上的strftime不支持与unix上完全相同的代码的问题

此外,我在mac os x上运行了以下操作:

> date_time.strftime("%e/%m/%y")
" 3/03/11" 
正如你所看到的,有一个零的空间。在调用strftime之后,仍然需要处理字符串

我会说,选择最安全的赌注,在这种情况下是%d,然后打电话给gsub/trim。

试试这个

date_time.strftime("%d/%m/%y").gsub(/ 0(\d\D)/, ' \1')
作为一种选择:

date_time.strftime("#{date_time.day}/%m/%y")

不幸的是,
%e
仍然保留一个空格来代替0。如果你不想要空间,我会像这样去掉前导的0

> date_time.strftime("%d/%m/%y").gsub(/^0/, '')
"7/12/12"

如果要删除月或日的前导零,只需在格式前添加减号,如下所示:

Date.parse("2014/06/06").strftime("%Y/%-d/%-m")

0
\1
之前的空格错误。此外,这似乎是一个太原始和野蛮的解决方案。谢谢:)出于好奇,你在哪里找到这些有用的信息?我已经很久没有读过我的评论了。很长一段时间。但我想问的是,我是如何做到这一点的。对于UNIX date命令,它就是这样工作的。“日期'+%-Y.%-m.%-d.%-H.%-m.%-S'”