Ruby strftime:没有前导零的日子,%e无效

时间:2011-03-23 18:00:41

标签: ruby

我正在尝试使用没有前导零的日期格式化日期

%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更方便)吗?

5 个答案:

答案 0 :(得分:24)

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

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

答案 1 :(得分:9)

作为选项:

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

答案 2 :(得分:3)

我之前在Windows上的strftime不支持与unix完全相同的代码时遇到了问题。

另外,我在mac os x上运行了以下命令:

> date_time.strftime("%e/%m/%y")
" 3/03/11" 

正如你所看到的,零有一个空间。在调用strftime之后,您仍然需要处理字符串

我会说,选择最安全的赌注,在这种情况下为%d,并在其上调用gsub / trim。

答案 3 :(得分:1)

试试这个

date_time.strftime("%d/%m/%y").gsub(/ 0(\d\D)/, ' \1')

答案 4 :(得分:1)

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

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