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

Mic*_*rfs 10 ruby

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

%d它工作正常,但前导零

date_time.strftime("%d/%m/%y")
result: 04/01/11 
Run Code Online (Sandbox Code Playgroud)

我用Google搜索并发现我应该使用%e而不是%d,但是执行以下操作会给我一个空字符串.

date_time.strftime("%e/%m/%y")
result: 
Run Code Online (Sandbox Code Playgroud)

这与Ruby的版本有什么关系吗?我在Windows机器上使用v1.8.7.更重要的是,有没有另一种方法来完成一天没有领先零(更方便然后gsub)?

Col*_*III 27

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

Date.parse("2014/06/06").strftime("%Y/%-d/%-m")
Run Code Online (Sandbox Code Playgroud)


Vas*_*ich 9

作为选择:

date_time.strftime("#{date_time.day}/%m/%y")
Run Code Online (Sandbox Code Playgroud)


edm*_*dmz 3

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

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

> date_time.strftime("%e/%m/%y")
" 3/03/11" 
Run Code Online (Sandbox Code Playgroud)

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

我想说,选择最安全的选择,在本例中为 %d,然后调用 gsub/trim 。