如何写没有前导零或前导空格的时间?

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 “Python strftime – date without leading 0?” 与 Python 中的任务大致相同,并表示 %- 仅适用于 Unix。 Why does “%-d”, or “%-e” remove the leading space or zero? 表示不兼容是因为 Python 调用了底层操作系统的 strftime,它可能具有特定于平台的扩展。不知道Ruby的strftime是不是一样。

以上是关于如何写没有前导零或前导空格的时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除前导和尾随空格?

如何在 UIView 上绘制一个 NSString 数组,它们之间没有任何前导空格并占据整个矩形?

如何删除 Python 中的前导空格?

前导和尾随空格剪切 + 中间空格替换

如何以标准方式修剪前导/尾随空格?

如何删除前导和尾随的空格以及字符串中的多个空格? [复制]