69 votes

Comment calculer le jour de la semaine d'une date en ruby ?

Comment calculer le jour de la semaine d'une date en Ruby ? Par exemple, le 28 octobre 2010 est = jeudi

74voto

mway Points 3407

Jetez un coup d'œil à la Référence à la classe de date . Une fois que vous avez un objet de date, vous pouvez simplement faire dateObj.strftime('%A') pour la journée complète, ou dateObj.strftime('%a') pour la journée abrégée. Vous pouvez également utiliser dateObj.wday pour la valeur entière du jour de la semaine, et l'utiliser comme bon vous semble.

3 votes

Comment localiser ceci, disons si vous utilisez Rails ?

0 votes

#wday devrait être la meilleure réponse à cette question.

74voto

steenslag Points 29662

Je l'ai utilisé parce que je détestais aller dans la documentation sur les dates pour chercher la syntaxe strftime, ne pas la trouver et devoir me rappeler qu'elle se trouve dans la documentation sur le temps.

require 'date'

class Date
  def dayname
     DAYNAMES[self.wday]
  end

  def abbr_dayname
    ABBR_DAYNAMES[self.wday]
  end
end

today = Date.today

puts today.dayname
puts today.abbr_dayname

10 votes

Il semble que la classe Time dispose également d'une méthode #wday, pour information.

14 votes

Distiller steenslag à une ligne qui répond directement à l'affiche : utiliser Date::ABBR_DAYNAMES[Date.today.wday] . (Vous devez inclure la bibliothèque Date avant de pouvoir l'utiliser : require Date .) Options : pour afficher les noms de jours complets plutôt que les trois premières lettres, utilisez DAYNAMES au lieu de ABBR_DAYNAMES .

1 votes

Y a-t-il un moyen d'obtenir un nombre de 0 à 6 sans le convertir soi-même ?

33voto

brian_d Points 6783
time = Time.at(time)    # Convert number of seconds into Time object.
puts time.wday    # => 0: Day of week: 0 is Sunday

2 votes

Il y a aussi Time#cwday pour obtenir des dates sur la plage 1-7. De plus, ces méthodes sont aujourd'hui (Ruby 2.3 au moins) également présentes dans la classe Date.

1 votes

Time n'a pas cwday pero Date a.

31voto

Abhi Points 197
Date.today.strftime("%A")
=> "Wednesday"

Date.today.strftime("%A").downcase  
=> "wednesday"

5voto

saqib qhan Points 141

Disons que j'ai date = Time.now.to_date puis date.strftime("%A") imprimera le nom du jour de la semaine et pour n'avoir que le numéro du jour de la semaine, écrivez date.wday .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X