Neha
Neha

Reputation: 305

Date format not working properly in Ruby

My string is: "02-19-2016", which is date in MM-DD-YYYY format. It's giving proper result for some scenarios, but for some, its failing like:

@query="02-19-2016"
d, m, y = @query.split '-'
# => ["02", "19", "2016"] 
Date.valid_date? y.to_i, m.to_i, d.to_i
# => false 

Can someone give any solution?

Upvotes: 0

Views: 61

Answers (3)

spickermann
spickermann

Reputation: 106882

Date.strptime was build to parse strings by a certain pattern:

require 'date'

Date.strptime("02-19-2016", '%m-%d-%Y')
#<Date: 2016-02-19 ((2457438j,0s,0n),+0s,2299161j)>

Upvotes: 2

guitarman
guitarman

Reputation: 3310

require 'date'

m, d, y = '02-19-2016'.split('-').map(&:to_i)
# => [2, 19, 2016]

Date.valid_date? y, m, d
# => true

date = Date.civil(y, m, d)
# => #<Date: 2016-02-19 ((2457438j,0s,0n),+0s,2299161j)>

Upvotes: 0

sawa
sawa

Reputation: 168101

Change

d, m, y = @query.split '-'

to

m, d, y = @query.split '-'

Upvotes: 2

Related Questions