我正在使用此行来获取该月第一天的开始时间。
t = Time.now.to_date.beginning_of_month.beginning_of_day
当我使用t.strftime("%A %b %e @ %l:%m %p")
它显示:
Monday Feb 1 @ 12:02 AM
小时总是12(而不是00),更精细的分钟更改以匹配整数的月份。对于二月份的日期,它会显示12:02 AM
我在变量上使用.prior_month
和.next_month
来及时向前或向后移动。
所以当我搬到六月时,这将显示为
Tuesday June 1 @ 12:06 AM
但是当我只使用直的t
显示t.to_s
的值时,我得到00:00:00的这个时间,这是我所期望的:
Mon Feb 01 00:00:00 -0700 2010
使用end_of_day会发生类似的错误,但小时始终是晚上11点 分钟是与整数月份匹配的相同整数值,即 时间是六月的晚上11:06,二月的晚上11:02。
新奇? 不可否认的是Rails的菜鸟。
感谢您提出任何意见或解释。
答案 0 :(得分:2)
%m
是一年中的一个月。您需要%M
,如t.strftime("%A %b %e @ %l:%M %p")
。
end_of_day
问题是有道理的,因为一天的结束时间是11:59。
答案 1 :(得分:0)
如果我们在这里谈论PHP日期格式化语法,%I
指的是12小时格式的小时的两位数表示,即01到12.如果你想要24小时的时间,请使用而是%H
。
%m
是几个月,而%M
是几分钟。
请参阅PHP文档here。
修改强>
我是愚蠢的,并且因为函数的名称而认为你在谈论PHP。幸运的是,Ruby的语法看起来基本相同,正如你从j。的回答中看到的那样。
答案 2 :(得分:0)
我相信这就是你想要的:
t = Time.now.to_date.beginning_of_month.beginning_of_day
t.strftime("%A %b %e @ %H:%M %p")
您可以找到有关time
格式here的更多信息。