2011-06-02 19 views
8

"2011-06-02T23: 59: 59 + 05: 30" gibi bir dizim var.Ruby - string'i tarihe dönüştür

Tarih biçimine dönüştürmek ve yalnızca tarihi "2011-06-02" ayrıştırmak istiyorum.

+1

Bu, defalarca sorulmuş ve cevaplanmıştır. Yinelenen olarak kapatmayı öneriyorum. http://stackoverflow.com/questions/2720907/ruby-convert-string-to-date –

+0

olası Ruby [Tarih Dönüştürme] 'nin olası kopyası (http://stackoverflow.com/questions/3599239/ruby-string-to -date-conversion) – DGM

cevap

24

geçerli:

require 'date' # If not already required. If in Rails then you don't need this line). 
puts DateTime.parse("2011-06-02T23:59:59+05:30").to_date.to_s 
2

Simplies yolu Ruby 1.9.2 için

require 'date' 
date = "2011-06-02T23:59:59+05:30".gsub(/T.*/, '') 
DateTime.parse(date) 
+1

Veya "DateTime" yerine "Date" ve gsub işlemini yok sayabilirsiniz;) – Schovi

12
require 'date' 
d = Date.parse("2011-06-02T23:59:59+05:30") 
d.strftime("%F") 
+0

veya sadece "d.to_s" :) – rubyprince

+2

bu zaman zaman doğru bir zaman damgası ayrıştırmak değil - DateTime kullanın .parse() 'yerine sadece tarihlerle çalışmak istemediğiniz sürece. –

+0

@ AdamMcArthur..The OP özellikle sadece tarih bölümünü istedi. Ama haklısın. tarihler için bile, zaman bölümünü ve saat dilimlerini çıkarırsak, tehlikeli olabilir, çünkü başka bir zaman diliminde başka bir gün olabilir. Yani, daha iyi DateTime.parse kullanın. – rubyprince

2

Time.parse() Eğer bütün tarih saat ayrıştırmak için izin vermelidir. Daha sonra, bir dizede sadece bir tarih olarak biçimlendirmek için time.strftime (string) kullanabilirsiniz.

 
date = Time.parse("2011-06-02T23:59:59+05:30") 
date_string = time.strftime("%y-%m-%d") 
of 
date_string = time.strftime("%F") 

(daha çıktı dize biçimleri için Ruby Doc for Time bakın) bir dize istiyorsanız yukarıdaki çalışması gerekir ; Eğer işlemek için bir tarih nesnesi istiyorsanız, o zaman ruby ​​Date sınıfı onu ele almanıza yardımcı olabilir ama yine de her şeyin Time nesnesiyle yapılması gerektiğini düşünüyorum; Date sınıfının ayrıntıları için bkz Ruby Doc for Date.

Cevabım, cevabımla yanlış yöne yöneldiğimde bana yardımcı olur.