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'”