打印

如何把时间格式化为中文?

如何把时间格式化为中文?

比如:8-9-2007 @ 23:00 pm
格式化为:2007年8月9日 @ 下午23:00

I.forget('you'){|something| something.remember.deepen}

TOP



input = "8-9-2007 @ 23:00  pm"
d=DateTime.parse(input)
p d.class
puts d.methods.sort


本帖最近评分记录
  • drive2me R币 +2 Thanks for help. 2007-8-9 11:52

TOP



t = Time.now             #=>Thu Aug 09 10:15:51 +0800 2007
year = t.year              #=> 2007
month = t.month       #=> 8
day = t.day               #=> 9
hour = t.hour            #=> 10
min = t.min               #=> 15
sec = t.sec                #=> 51


把这些变量拿到字符串里,想怎么格式化就怎么格式化吧
虽然麻烦了点。。。。。

TOP

这也是个办法

I.forget('you'){|something| something.remember.deepen}

TOP

回复 #2 axgle 的帖子

???
API我会去看

I.forget('you'){|something| something.remember.deepen}

TOP

自己搞定:
ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.update(:default => '%Y 年 %m 月 %d 日 @ %H %M %P')


页面输出:2007 年 08 月 09 日 @ 11 09 am

am不知道如何改成上午。。。

I.forget('you'){|something| something.remember.deepen}

TOP



def toChiTime(time)
  time.strftime("%Y年%m月%d日 @ " + (time.strftime("%p") == "AM" ? "上午" : "下午" ) + " %H:%M")
end
puts toChiTime(Time.now)
puts toChiTime(Time.now.to_s(:db))


本帖最近评分记录

TOP

这样我只要写个helper方法就OK了,页面显示:
2007年08月09日 @ 下 午 12:32

或者用我上面的方法+helper方法(不如直接用helper方便)

I.forget('you'){|something| something.remember.deepen}

TOP



def time_to_str time,pattern="%Y年%m月%d日 %H:%M"
        time.strftime pattern unless time.nil?
end




time_to_str Time.now


引用:
2007年08月11日 10:10


time_to_str Time.now,"%Y年%m月%d日"


引用:
2007年08月11日


time_to_str Time.now,"%m/%d %H:%M"


引用:
08/11 10:12
本帖最近评分记录
  • drive2me R币 +2 更简单的解! 2007-8-11 11:12

TOP

楼上的没有解决上下午的显示问题。
谢谢大家加入Ruby中文社区!
[寻找您身边的Rubyist.]

TOP

用24小时制也不用写上午下午了,要显示上午下午的话,把我上面的上下午的代码贴到后面就行了

I.forget('you'){|something| something.remember.deepen}

TOP

引用:
原帖由 skyover 于 2007-8-11 12:11 发表
楼上的没有解决上下午的显示问题。
24小时不需要上下午判断:) 感觉加个上午几点,下午几点,不好看,呵呵

TOP

2008-12-02 10:19 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html) @38.103.63.61