“DateTime.beginning_of_week =>:星期一”但“DateTime.current.wday == 0”是星期日

时间:2014-04-30 12:36:21

标签: ruby-on-rails date datetime ruby-on-rails-4

DateTime.current.wday开始计算周日的一周。

我希望从周一开始计算周数。

我没有发现这种差异。

今天的工作日如何以数字表示形式获得?

2 个答案:

答案 0 :(得分:4)

我认为传统的几周被认为是星期日作为一周的第一天。如果你想把这一周表示为从不同的一天开始,例如星期一,你可以做类似的事情

(DateTime.current.wday + 6) % 7

除此之外,我相信有一个strftime来获得你想要的东西,但它会以字符串的形式返回。

答案 1 :(得分:3)

Ruby中的wday方法总是会给你0到6的值,其中0是星期日,因为这是它的定义。

如果您想要1到7范围内的工作日编号(其中1表示星期一),请改用strftime('%u')。使用'%w'将为您提供0到6的范围(其中0表示星期日)。

2.0.0-p247 :001 > Date.new(2014,5,4).strftime('%u')
 => "7" 
2.0.0-p247 :002 > Date.new(2014,5,4).strftime('%w')
 => "0" 
2.0.0-p247 :003 > Date.new(2014,5,4)
 => Sun, 04 May 2014 

您认为本周开始的时间根据您在世界的不同而不同。 Rails为您提供了Date.beginning_of_week=(week_start)方法,允许您更改此方法,但星期一被视为默认值。