19

在 Ruby 1.9 程序中,我想将当前时间格式化为Thu 1:51 PM. 我应该在一天中的某个时间使用什么格式代码(1在本例中)?

Time.now.strftime '%a %I:%M %p' #=> "Thu 01:51 PM"
Time.now.strftime '%a %l:%M %p' #=> "Thu  1:51 PM"

%I有一个前导零 ( 01)。%l有一个前导空格 (  1)。我在strftime 文档中看不到任何其他格式的代码。我不能使用.lstrip,因为空格在字符串的中间。我可以使用.gsub(/ +/, " "),但我想知道是否有更简单、更简单的方法。

4

1 回答 1

42
Time.now.strftime '%a %-l:%M %p' #=> "Thu 1:51 PM"

%-l而不是%l. 带前导-空格和零。

您也可以使用-其他格式代码。Ruby strftime 文档甚至提到%-mand %-d,尽管它没有提到您可以-与任何代码一起使用。因此,%-I将给出与 相同的结果%-l。但我推荐%-l,因为使用l而不是I对我来说,一开始就不需要任何东西——它写的空间看起来更意外。

您还可以看到一份详尽的 Ruby 1.8 strftime格式代码列表,包括具有-和类似语法_的代码0。它说 Mac OS X 上的 Ruby 1.8 不支持这些扩展语法,但不要担心:它们在我的 OS X 机器上的 Ruby 1.9 中工作。

于 2012-06-28T18:18:44.923 回答