나는 사용자 입력에서 들어오는 여러 날짜, 예가 :루비 문자열
MM-DD-YYYY
6-3-1975
MM/DD/YYYY
4/23/1967
이 require 'time'
에 내장 된 루비를 사용하고 Time.parse("4/23/1967")
에 노력을 나에게 오류를 제공 time.rb : argument out of range
.
대시 또는 슬래시를 사용하여 다른 사용자 입력을 변환 할 수있는 솔루션은 무엇입니까?
나는 사용자 입력에서 들어오는 여러 날짜, 예가 :루비 문자열
MM-DD-YYYY
6-3-1975
MM/DD/YYYY
4/23/1967
이 require 'time'
에 내장 된 루비를 사용하고 Time.parse("4/23/1967")
에 노력을 나에게 오류를 제공 time.rb : argument out of range
.
대시 또는 슬래시를 사용하여 다른 사용자 입력을 변환 할 수있는 솔루션은 무엇입니까?
해결 방법 :
그래서 원하는 입력 형식은 무엇require 'date'
userDate = "4-23-1967"
readDate = Date.strptime(userDate, "%m-%d-%Y")
convertedDate = readDate.strftime("%-m/%-d/%Y")
puts convertedDate
OUTPUT: 4/23/1967
아래에보십시오 :
Time.parse("23/4/1967")
#=> 1967-04-23 00:00:00 +0100
Time.parse("3-6-1975")
#=> 1975-06-03 00:00:00 +0100
그래서 문제가 귀하의 월과 일 순서가 반전된다는 점이다.
그것은 내 문제가 아니야 ... 사용자가 MM/DD/YYYY를 입력하고 있으므로 제대로 작동하지 않는 올바른 형식으로 변환해야합니다. – AntonB
다음은이 하나의 라이너를 사용해 볼 수 있습니다. Time.parse (date^('-')) –
@AntonB "올바른 형식으로 변환해야합니다." 한 사용자가 미국 기반이고 "MM/DD/YYYY"를 사용하고 다른 사용자가 "DD/MM/YYYY"를 사용하는 다른 지역에있는 경우 어떻게됩니까? 임의로 MM 값을 DD로 전환 하시겠습니까? 시간의 일부가 실패하고 때로는 월과 일의 값이 뒤바뀔 때가 있습니다. 그 시점에서 매우 귀찮은 버그를 도입하게 될 것입니다. 사용자는 사용하려는 날짜 형식을 사용자에게 묻거나 월 및 일을 입력 할 때 어떤 형식 으로든 되돌릴 수있는 양식을 사용하지 않아도됩니다. –
입니까? – jkeuhlen
사용자는 표시된 입력을 입력 할 수 있습니다 ... 문제는 하나의 형식으로 들어오는 다른 형식을 변환하려고합니다 ... MM/DD/YYYY – AntonB
그래서 모든 사용자 입력이 강제로 끝나기를 원합니다. 양식 MM/DD/YYYY? 나는 당신이'Time.parse'를 가지고 무엇을하려하는지 혼란 스러웠다. – jkeuhlen