J'ai souvent utilisé l'application Rails pour calculer le prix pour une période spécifique et jouer avec le temps pour le vérifier, mais j'ai été impressionné par le fait qu'il était assez facile d'obtenir l'heure que je voulais, alors je l'ai utilisée à ce moment-là. Les méthodes de manipulation du temps sont résumées au lieu de mémorandum.
Je vais le présenter car il a été écrit en détail dans l'article suivant. En conclusion, lors de l'utilisation avec Rails, l'utilisation de TimeWithZone fait beaucoup de progrès. Cet article est écrit sur l'hypothèse que cette classe sera utilisée. Différences entre l'heure, la date, la date et l'heure, TimeWithZone entre Ruby et Rails \ -Qiita
Système d'acquisition du temps super basique. Pour le moment, c'est basique. Je pense qu'il est souvent converti en différentes formes sur cette base.
#Obtenez l'heure actuelle
Time.current
=> Wed, 15 Jan 2020 13:18:07 UTC +00:00
#Vérifier la classe
Time.current.class
=> ActiveSupport::TimeWithZone
#Convertir en type chaîne
Time.current.strftime("%F")
=> "2020-01-15"
Vous pouvez également obtenir l'heure actuelle en utilisant Time.now
, mais dans ce cas, il existe les différences suivantes.
config / application.rb
, mais il obtient l'heure actuelle en fonction de la variable d'environnement ou du fuseau horaire du système. * On craint que l'heure ne soit significativement différente **.Puisque vous pouvez utiliser la méthode de la classe TimeWizhZone, il semble bon de l'obtenir ici.
Je voudrais obtenir les données d'hier et les données du mois prochain, mais à ce niveau, c'est pratique car je peux les apporter en une seule fois, comme indiqué ci-dessous.
#hier
Time.current.yesterday
#le prochain jour
Time.current.tomorrow
#le mois dernier
Time.current.prev_month
#Le mois prochain
Time.current.next_month
#Début du mois
Time.current.beginning_of_month
#Fin du mois
Time.current.end_of_month
#Année précédente
Time.current.prev_year
#l'année suivante
Time.current.next_year
Si vous souhaitez le modifier à n'importe quelle date ou mois, vous pouvez l'obtenir en écrivant comme suit.
#Il ya 3 jours/3 jours plus tard
Time.current.ago(3.days)
Time.current.since(3.days)
#il y a 3 mois/3 mois plus tard
Time.current.ago(3.month)
Time.current.since(3.month)
#il y a 3 ans/3 années plus tard
Time.current.ago(3.years)
Time.current.since(3.years)
Lors du calcul du nombre de jours, chaque nombre peut être introduit en écrivant comme suit. Le type à ce moment est le type int de base.
#Année
Time.current.year
=> 2020
#Mois
Time.current.month
=> 6
#Date
Time.current.day
=> 7
La soustraction de TimeWithZone renvoie UNIXTIME (secondes). En convertissant cela en utilisant Time.zone.at, vous pouvez l'utiliser lorsque vous voulez obtenir la date, etc. à partir de la différence entre deux dates et heures.
#Convertir le temps du réglage en TimeWithZone
time1 = Time.zone.parse('2020-01-05 12:00:00')
time2 = Time.zone.parse('2020-01-01 10:00:00')
#Soustraire pour obtenir UNIXTIME (secondes)
time1 - time2
=> 352800.0
#Convertir les secondes en TimeWithZone
Time.zone.at(time1 - time2)
Il est utilisé lorsque vous souhaitez acquérir des données générées à une date spécifique dans un test.
Time.zone.parse('2020-01-01')
=> Wed, 01 Jan 2020 00:00:00 UTC +00:00
Time.zone.parse('2020-01-01 12:00:00')
=> Wed, 01 Jan 2020 12:00:00 UTC +00:00
#Créer un nouveau TimeWithZone basé sur l'heure actuelle
Time.zone.parse("#{Time.current.strftime('%F')} #{Time.current.hour}:00:00")
=> Wed, 15 Jan 2020 13:00:00 UTC +00:00
Avant de le toucher, j'étais un peu faible à contrôler le temps, mais j'en ai appris plus en le touchant. S'il existe d'autres méthodes de fonctionnement pratiques qui peuvent être effectuées, je les ajouterai.
Recommended Posts