Bạn có thể sử dụng Date.strptime
phương pháp được cung cấp trong thư viện chuẩn của Ruby:
require 'date'
string = "20120723"
date = Date.strptime(string,"%Y%m%d")
Cách khác, như đề xuất trong các ý kiến, bạn có thể sử dụng Date.parse
, vì chẩn đoán hoạt động chính xác trong trường hợp này:
require 'date'
string = "20120723"
date = Date.parse(string)
Cả hai sẽ tăng ArgumentError
nếu ngày không hợp lệ:
require 'date'
Date.strptime('2012-March', '%Y-%m')
#=> ArgumentError: invalid date
Date.parse('2012-Foo') # Note that '2012-March' would actually work here
#=> ArgumentError: invalid date
Nếu bạn cũng muốn đại diện cho giờ, phút, v.v., bạn nên xem DateTime. DateTime cũng cung cấp phương thức parse
hoạt động giống như phương pháp phân tích cú pháp trên Date
. Điều tương tự cũng xảy ra với strptime
.
Date.parse cũng hoạt động cho YYYYMMDD. Không cần chuỗi định dạng. – rrhartjr
Làm cách nào để phân tích cú pháp ngoại lệ? – chrisapotek
Có cách nào để phát hiện xem một chuỗi sẽ ném ngoại lệ phân tích cú pháp không? – theUtherSide