我正在尝试使用没有前导零的日期格式化日期
%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更方便)吗?
答案 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"