【问题标题】:How do I write the hour of the time without a leading zero or leading space?如何写没有前导零或前导空格的时间?
【发布时间】:2012-06-30 07:50:36
【问题描述】:

在 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 documentation 中看不到任何其他格式代码。我不能使用.lstrip,因为空格在字符串的中间。我可以使用.gsub(/ +/, " "),但我想知道是否有更简单、更简单的方法。

【问题讨论】:

    标签: ruby time ruby-1.9 strftime time-format


    【解决方案1】:
    Time.now.strftime '%a %-l:%M %p' #=> "Thu 1:51 PM"
    

    %-l 而不是%l- 去掉前导空格和零。

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

    您还可以看到an exhaustive list of Ruby 1.8 strftime format codes,包括带有- 以及类似语法的_0。它说 Mac OS X 上的 Ruby 1.8 不支持这些扩展语法,但不用担心:它们在我的 OS X 机器上的 Ruby 1.9 中工作。

    【讨论】:

    猜你喜欢
    • 2014-03-23
    • 2021-12-06
    • 2021-07-19
    • 2023-04-04
    • 2016-12-05
    • 1970-01-01
    • 2023-03-04
    • 2015-05-07
    相关资源
    最近更新 更多