Gibt es eine einfache Möglichkeit zu überprüfen, ob eine Variable/ein Objekt vom Typ Date
/Time
/DateTime
ist? Ohne Benennung Alle ArtenWie überprüft man, ob Variable in Ruby Date oder Time oder DateTime ist?
Antwort
Eine weitere Option:
def is_datetime(d)
d.methods.include? :strftime
end
Danke für diese Antwort. Es führte mich zu dieser Lösung: 'd.respons_to? (: Strftime)' –
Ich glaube nicht, gibt es eine „einfache Möglichkeit,“ ohne Eingabe die alle Arten von Variationen Date
/Time
/DateTime
/Timezone
aus.
Die einfachste und schnellste Weg ist dateTime.is_a?(DateTime)
oder Time.is_a?(Time)
, Wiederholung ad nausem zu tun - die alle einen boolean zurück.
Umgekehrt können Sie auch kind_of?.
Sie könnten auch einen Rahmen finden können, die eine Funktion hat, alle Variationen von Datum und Uhrzeit zu überprüfen.
Wenn Sie das Objekt überprüfen möchten, hier haben Sie ein paar Beispiele:
[email protected]nisevi ~:$ irb
irb(main):001:0> require "date"
=> true
irb(main):002:0> require "time"
=> true
irb(main):003:0> d = Date.new
=> #<Date: -4712-01-01 ((0j,0s,0n),+0s,2299161j)>
irb(main):004:0> dt = DateTime.new
=> #<DateTime: -4712-01-01T00:00:00+00:00 ((0j,0s,0n),+0s,2299161j)>
irb(main):005:0> t = Time.new
=> 2016-06-22 21:33:09 +0200
irb(main):014:0> d.instance_of?(Date)
=> true
irb(main):015:0> d.instance_of?(DateTime)
=> false
irb(main):016:0> d.instance_of?(Time)
=> false
irb(main):017:0> dt.instance_of?(DateTime)
=> true
irb(main):018:0> dt.instance_of?(Time)
=> false
irb(main):019:0> dt.instance_of?(Date)
=> false
irb(main):020:0> t.instance_of?(Time)
=> true
irb(main):021:0> t.instance_of?(DateTime)
=> false
irb(main):022:0> t.instance_of?(Date)
=> false
Auch ich denke, dass Time-Zone von Rails und nicht von Ruby.
Wie pro Ihren Kommentar, wenn Sie ein Time-Objekt zu Datetime konvertieren wollen denke ich, dass so etwas wie dies sollte es funktionieren:
def time_to_datetime time
return time.to_datetime if time.instance_of?(Time)
false
end
Hier haben Sie einige Code:
irb(main):026:0> t.instance_of?(Time)
=> true
irb(main):027:0> t.methods.sort.to_s
=> "[:!, :!=, :!~, :+, :-, :<, :<=, :<=>, :==, :===, :=~, :>, :>=, :__id__, :__send__, :asctime, :between?, :class, :clone, :ctime, :day, :define_singleton_method, :display, :dst?, :dup, :enum_for, :eql?, :equal?, :extend, :freeze, :friday?, :frozen?, :getgm, :getlocal, :getutc, :gmt?, :gmt_offset, :gmtime, :gmtoff, :hash, :hour, :httpdate, :inspect, :instance_eval, :instance_exec, :instance_of?, :instance_variable_defined?, :instance_variable_get, :instance_variable_set, :instance_variables, :is_a?, :isdst, :iso8601, :itself, :kind_of?, :localtime, :mday, :method, :methods, :min, :mon, :monday?, :month, :nil?, :nsec, :object_id, :private_methods, :protected_methods, :public_method, :public_methods, :public_send, :remove_instance_variable, :respond_to?, :rfc2822, :rfc822, :round, :saturday?, :sec, :send, :singleton_class, :singleton_method, :singleton_methods, :strftime, :subsec, :succ, :sunday?, :taint, :tainted?, :tap, :thursday?, :to_a, :to_date, :to_datetime, :to_enum, :to_f, :to_i, :to_r, :to_s, :to_time, :trust, :tuesday?, :tv_nsec, :tv_sec, :tv_usec, :untaint, :untrust, :untrusted?, :usec, :utc, :utc?, :utc_offset, :wday, :wednesday?, :xmlschema, :yday, :year, :zone]"
irb(main):028:0> t.to_datetime
=> #<DateTime: 2016-06-22T21:33:09+02:00 ((2457562j,70389s,767750206n),+7200s,2299161j)>
irb(main):029:0> t.instance_of?(Time)
=> true
irb(main):030:0> t.instance_of?(DateTime)
=> false
irb(main):031:0> tdt = t.to_datetime
=> #<DateTime: 2016-06-22T21:33:09+02:00 ((2457562j,70389s,767750206n),+7200s,2299161j)>
irb(main):032:0> tdt.instance_of?(Time)
=> false
irb(main):033:0> tdt.instance_of?(DateTime)
=> true
Hier können Sie haben einige interessante Informationen In Ruby on Rails, what's the difference between DateTime, Timestamp, Time and Date?
hässlich, aber echte Lösung:
def is_datetime(d)
%w(Date Time DateTime Timezone).any? { |t| d.class.name == t }
end
Und Test:
d = Date.new # DateTime.new or Time.new or Time.zone
is_datetime(d) # returns true
es für alle 4 überprüft (einschließlich der Schienen Zeitzone)
Dies wird für jede Klasse mit "Date" oder "Time" in ihrem Namen, z. 'NotADate' oder' Timeline'. –
Ich habe die Antwort angepasst, bitte upvote, wer auch immer das abgelehnt hat. – Aurimas
Sie die Klasse eines Objekts prüfen kann
object.class
tun es Datum zurückgeben sollte , String oder was auch immer es ist. Sie können tun, auch die umgekehrte und überprüfen, ob ein Objekt eine Instanz einer Klasse ist:
object.instance_of?(class)
wo Klasse ist, die Sie überprüfen möchten (String, Datum), Rückkehr wahr/falsch
zu finden In welcher Klasse sich das Modul (oder die Methode) befindet, verwenden Sie die Funktion .class
, mit der Sie Ruby-Objekte untersuchen können, um herauszufinden, in welcher Klasse sie sich befinden. Die Syntax dafür sieht folgendermaßen aus: object.class
. Hier einige Beispiele:
irb(main):001:0> require 'date'
=> true
irb(main):002:0> d = Date.today
=> #<Date: 2016-06-22 ((2457562j,0s,0n),+0s,2299161j)>
irb(main):003:0> t = Time.now
=> 2016-06-22 18:52:24 -0500
irb(main):004:0> t.class
=> Time
irb(main):005:0> d.class
=> Date
Wie Sie sehen dies ist eine einfache und einfache Möglichkeit, die Klasse zu finden, dass das Objekt in ist.
- 1. Wie überprüft man, ob eine Variable Array oder Objekt ist?
- 2. Wordpress Wie überprüft man, ob es POST oder PAGE ist
- 3. SmartGWT - Wie überprüft man, ob ListGridRecord erweitert oder minimiert ist?
- 4. Wie überprüft man, ob App cpu-gebunden oder speichergebunden ist?
- 5. Wie überprüft man, ob eine Datei gesperrt ist oder nicht?
- 6. Wie überprüft man, ob eine Domain punycode ist oder nicht?
- 7. Wie überprüft man, ob es Null ist Datetime in C#
- 8. MySQL datetime und Current Date Time Funktion
- 9. Wie überprüft man, ob ein div vorhanden ist oder nicht?
- 10. Wie überprüft man, ob ein Parameter wahr oder falsch ist?
- 11. Wie überprüft man, ob WiFi verbunden ist oder nicht?
- 12. Wie überprüft man, ob das Feld leer oder leer ist?
- 13. Wie überprüft man, ob ein DateTime-Feld nicht null oder leer ist?
- 14. Wie kann ich entkommen "oder", wenn es eine Variable in Ruby oder Schienen ist?
- 15. Wie überprüft man, ob ein Objekt in Ruby iterierbar ist?
- 16. Wie überprüft man, ob eine Variable nicht null ist?
- 17. Wie überprüft man, ob eine Variable in JavaScript geladen ist?
- 18. Wie überprüft man, ob eine Variable in Python leer ist?
- 19. Wie überprüft man, ob eine Variable eine Ganzzahl oder eine Zeichenkette ist?
- 20. Wie überprüft man, ob die Django-Template-Variable definiert ist?
- 21. Wie überprüft man, ob eine Variable mit einem Wert ohne "undefined lokale Variable oder Methode" existiert?
- 22. Wie überprüft man, ob Schlüssel oder Wert in Map existieren?
- 23. konvertieren Millisekunde zu Joda Date Time oder für Zone 0000
- 24. MySql Date Time Comparison
- 25. Wie überprüft man, ob die Sitzung in Javascript null ist oder nicht?
- 26. Wie überprüft man, ob eine implizite oder explizite Umwandlung existiert?
- 27. Wie überprüft man, ob eine Variable oder ein Array in C initialisiert wird? #
- 28. Wie überprüft man, ob Cookies leer sind oder nicht
- 29. Sitecore: Wie überprüft man, ob ImageMagick verwendet wird oder nicht?
- 30. Wie überprüft man, ob ein Feld deklariert wurde oder nicht?
Warum wollen Sie es überprüfen? Einige von ihnen teilen Methoden, mit denen Sie sie verwenden können, ohne zu wissen, um welchen Typ es sich handelt? – Leito
Ich habe einen aktiven Rails-Datensatz mit 2 Attributen, die Zeit sind. Ich muss eine '.map' erstellen, um jedes Attribut zu konvertieren, das Time to datetime ist. Wäre toll, dass in Zukunft die Art der Zeit in der DB geändert werden könnte, daher die Frage .. aber ich schätze ich bin jetzt nur ein bisschen neugierig ... – Aurimas
Neugierig warum der Downvote? .. Gibt es eine Möglichkeit, die Leute zu fragen, die abgelehnt wurden? Ich muss jemanden wütend gemacht haben in diesem "Forum" – Aurimas