如何写没有前导零或前导空格的时间?
Posted
技术标签:
【中文标题】如何写没有前导零或前导空格的时间?【英文标题】: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(/ +/, " ")
,但我想知道是否有更简单、更简单的方法。
【问题讨论】:
【参考方案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 中工作。
【讨论】:
希望每个解决方案都如此简单明了。 +1 此解决方案可能仅适用于 Unix 系统,不适用于 Windows。 This answer to “Pythonstrftime
– date without leading 0?” 与 Python 中的任务大致相同,并表示 %-
仅适用于 Unix。 Why does “%-d”, or “%-e” remove the leading space or zero? 表示不兼容是因为 Python 调用了底层操作系统的 strftime
,它可能具有特定于平台的扩展。不知道Ruby的strftime
是不是一样。以上是关于如何写没有前导零或前导空格的时间?的主要内容,如果未能解决你的问题,请参考以下文章