[英]How to display DateTimes with am/pm without using custom formatting in Rails
目前,我在Rails中使用以下命令显示DateTime
:
my_time.to_formatted_s(:long_ordinal)
这样产生的日期如下:
March 17th, 2014 14:44
完美,除了14:44
时间。 我想说2:44 pm(“ pm”的格式对我来说无关紧要)。 对于普通人来说,这需要更容易阅读。 我知道我可以使用:
my_time.strftime('%l:%M %p')
但是,我真的很想使用预定义的符号来实现更易于理解的格式,因为我希望这种语言在任何语言下都更具可读性。 如果有人使用另一种语言浏览,而DateTime
看起来自然有些不同,那么我希望Rails可以(或至少设置为)自动很好地显示DateTime
。 也许我期望在那里有太多的Rails吗? 尽管似乎没有简单的标志或设置更便于人类阅读的DateTime
格式,但对我来说似乎很奇怪。
在这种情况下,您可以添加自己的人性化格式
# config/initializers/time_formats.rb
Time::DATE_FORMATS[:custom_long_ordinal] = "%B %e, %Y %l:%M %p"
并与
my_time.to_formatted_s(:custom_long_ordinal)
有关ActiveSupport DateTime格式的信息,请参阅api文档参考: http ://apidock.com/rails/ActiveSupport/CoreExtensions/DateTime/Conversions/to_formatted_s
如果您只想晚上10:15
您可以使用:
t=Time.now
am=true
if t.hour >= 12
t=t-12*60*60
am=false
end
s=t.to_s[13..17]
if am==true
return s+ "am"
else
return s+ "pm"
end
或者使用类似的方式编辑/扩展时间类别(我不建议您使用此代码,这只是草稿)
class Time
def self.humanize
t=self
am=true
if t.hour >= 12
t=t-12*60*60
am=false
end
s=t.to_s[13..17]
if am==true
return s+ "am"
else
return s+ "pm"
end
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.