Saya perlu mengurai String berikut menjadi Objek DateTime:
30/Nov/2009:16:29:30 +0100
Adakah cara mudah untuk melakukan ini?
PS: Saya ingin mengubah string di atas apa adanya. Titik dua setelah tahun bukanlah salah ketik. Saya juga ingin menyelesaikan masalah dengan Ruby dan bukan RoR.
%d/%b/%Y:%H:%M:%S %Z
%Y
akan cocok dengan keduanya2015
(seperti yang diharapkan) dan2016-foo-bar
karena berhenti saat dilihat2016
. Perilaku ini konsisten dengan rekan C; namun, fungsi C mengembalikan posisi akhir pencocokan (misalnya yang pertama-
dalam kasus "2016") bagi kita untuk memutuskan apakah kecocokan tersebut tepat; di Ruby ia mengembalikan aDateTime
, jadi kita tidak tahu apakah masih ada sesuatu setelahnya.Bukankah ini juga harus berhasil?
sumber
require 'active_support/all'
dan kemudian"30/Nov/2009 16:29:30 +0100".to_datetime
(Anda tidak benar-benar membutuhkan semua ekstensi active_support, tapi semoga berhasil mencari tahu mana yang memerlukan secara selektif)to_datetime
ditambahkan keString
objek:require 'active_support/core_ext/string/conversions'
Saya telah sukses dengan:
sumber
Saya menggunakan
Time.parse("02/07/1988")
, seperti beberapa poster lainnya.Gotcha yang menarik adalah yang
Time
dimuat secara default ketika saya membuka IRB, tetapiTime.parse
tidak ditentukan. Saya harusrequire 'time'
membuatnya bekerja.Itu dengan Ruby 2.2.
sumber
Ini akan mengubah string dalam tanggal menjadi waktu waktu:
sumber
Untuk developer Chinese Rails:
sumber
di Ruby 1.8, modul ParseDate akan mengonversi ini dan banyak format tanggal / waktu lainnya. Namun, itu tidak menangani titik dua dengan anggun antara tahun dan jam. Dengan asumsi bahwa titik dua adalah salah ketik dan sebenarnya adalah spasi, maka:
sumber
Anda juga dapat mengurai string waktu tanggal dengan zona waktu tertentu:
sumber