Je devais maintenir le code de quelqu'un d'autre, et quand j'ai suivi le code, c'était un problème de convertir la date % j
en heure UNIX
.
Puis, quand j'ai été dégoûté et que j'ai cherché " ruby
mais strptime
?", Bingo !!
Testez avant de remplacer.
Exécutez le code suivant
$ ruby -e 'require "time" ; p Time.strptime("2003,070,12:21:51 JST", "%Y,%j,%H:%M:%S %z").to_i'
1041391311
# ↑ 2003/01/01 12:21:51 JST
un problème est survenu.
Hein? % J
Pouvez-vous l'interpréter?
Je n'ai pas pu obtenir de réponse même si je regardais Gugu [^ 1]
[^ 1]: C'est spécial d'utiliser % j
en premier lieu ...
Essayez différentes choses ...
Le .strptime
de la classe Time
(module?) De l'ancien ruby
ne semble pas interpréter% j
[^ 2]
Lors de la vérification, «2.7.1p83» était OK [^ 3]
[^ 2]: Donc, en ce qui concerne le remplacement du code, il y a divers problèmes avec l'utilisation de DateTime
, donc à la fin, sous la forme d'incorporer le code créé par vous-même pour la vérification ,,,
[^ 3]: 2.6.3p62
est OK.
Exécutez le code suivant avec «1.9.2p290», «2.0.0p481», «2.7.1p83», respectivement.
test.rb
require 'date'
require 'time'
#Fonction auto-fabriquée pour le contrôle
def manu(t)
arr = t.split(/[,: ]/).map(&:to_i)
Time.mktime(arr[0],1,1,arr[2],arr[3],arr[4]) + ( arr[1] - 1) * 24 * 60 * 60
end
str = "2003,070,12:21:51 JST"
# DateTime.Le résultat de strptime
p DateTime.strptime(str, "%Y,%j,%H:%M:%S %z").strftime("%s").to_i
#Résultat d'une fonction auto-fabriquée
p ( manu str ).to_i
# Timme.Le résultat de strptime
p Time.strptime(str, "%Y,%j,%H:%M:%S %z").to_i
Dans «1.9.2» et «2.0.0», «Time.strptime» n'interprète pas «% j». DateTime.strptime
l'interprétera.
shell-session:1.9.2p290,2.0.0p481
$ ruby test.rb
1047352911
1047352911
1041391311 # <= 2003/01/01 12:21:51 JST
D'un autre côté, «2.7.1» interprète également «Time.strptime».
shell-session:2.7.1p83
$ ruby test.rb
1047352911
1047352911
1047352911
S'il y a quelque chose comme la version ruby
de delta
, ce serait un coup si vous le lisez, mais cette passion ne naît pas ...
Recommended Posts