Program Tip

루비 문자열을 날짜로 변환

programtip 2020. 11. 7. 10:25
반응형

루비 문자열을 날짜로 변환


Ruby on Rails에서 문제가 발생했습니다. 형식 문자열을 Tue, 10 Aug 2010 01:20:19 -0400 (EDT)날짜 개체 로 변환하려고 합니다.

어쨌든 내가 이것을 할 수 있습니까?

다음은 내가 본 것입니다.

  1. Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
  2. 만성 파서
  3. 루비 : 문자열을 날짜로 변환
  4. Ruby를 사용하여 텍스트에서 날짜 구문 분석

이걸 도와주세요.


Date.parse방법에 어떤 문제가 있습니까?

str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
date = Date.parse str
=> #<Date: 4910837/2,0,2299161>
puts date
2010-08-10

작동하는 것 같습니다.

여기서 유일한 문제는 시간대입니다. UTC 시간대의 날짜를 원하면 Time객체 를 사용하는 것이 좋습니다 . 문자열이 있다고 가정합니다.

str = "Tue, 10 Aug 2010 01:20:19 +0400"
puts Date.parse str
2010-08-10
puts Date.parse(Time.parse(str).utc.to_s)
2010-08-09

로 변환 Time하는 더 간단한 방법을 찾을 수 없습니다 Date.


Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")

해야한다:

Date.strptime(updated, '%a, %d %b %Y %H:%M:%S %Z')

str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
str.to_date
=> Tue, 10 Aug 2010

https://rubygems.org/gems/dates_from_string 시도 할 수 있습니다 .

구조에서 날짜 찾기 :

text = "get car from repair 2015-02-02 23:00:10"
dates_from_string = DatesFromString.new
dates_from_string.find_date(text)

=> ["2015-02-02 23:00:10"]

참고 URL : https://stackoverflow.com/questions/3599239/ruby-string-to-date-conversion

반응형