微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

红宝石 – 如何在没有前导零或领先空间的情况下写下时间?

Ruby 1.9程序中,我想格式化当前的时间,如下午1:51.我应该在一天中使用什么格式的代码(在这个例子中为1)?
Time.Now.strftime '%a %I:%M %p' #=> "Thu 01:51 PM"
Time.Now.strftime '%a %l:%M %p' #=> "Thu  1:51 PM"

我有一个前导零(01). %l具有前导空间(1).我在strftime documentation中没有看到任何其他格式代码.我不能使用.lstrip,因为空格在字符串的中间.我可以使用.gsub(/ /,“”),但是我想知道是否有更少的黑客,更简单的方法.

解决方法

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

写入%-l而不是%l. – 带领空格和零.

您也可以使用其他格式代码. Ruby strftime文档甚至提到%-m和%-d,尽管没有提到可以使用任何代码.因此,%-I将给出与%-l相同的结果.但是我建议使用%-l,因为使用l而不是我,这意味着你不需要任何东西在开始 – 它写的空间看起来更加意外.

您还可以看到an exhaustive list of Ruby 1.8 strftime format codes,包括与 – 和类似的语法_和0.它说,Mac OS X上的Ruby 1.8不支持那些扩展语法,但不要担心:它们在我的OS X上的Ruby 1.9中工作机.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐