2016-09-02 3 views

답변

2

보십시오 :

나는이 결과를 필요 :

@date[-2..-1] = @day.to_s.rjust(2, "0") 
3

, 당신은 그냥이 같은 날짜 문자열에서 마지막 두 문자를 대체 할 수있는이

@date = '2016-09-01'.to_date 
@day = 5 
DateTime.new(@date.year, @date.month, @day).to_date.strftime('%Y-%m-%d') 
2

당신은 두 가지 옵션이 있습니다

,536,
  1. 날짜로 변환하고 날짜 구성 요소를 업데이트하고 문자열로 다시 포맷하십시오.
  2. 정규식을 사용하여 날짜 구성 요소 만 바꾸십시오.

로캘 설정을 고려하면 날짜로 변환하는 것이 더 안전한 옵션 일 수 있습니다. (예 : DD 대 MM/DD/YYYY 형식/MM/YYYY 형식) 문자열로 일 구성 요소 다시 포맷을 업데이트 문자열로 날짜 변환

:

require 'date' 
d = Date.parse(@date) 
Date.new(d.year,d.month,@day).to_s 

정규 표현식 솔루션 :

@date.sub!(/(\d{4}-\d{2}-)\d{2}$/, '\1' + "%02d"% @day) 
관련 문제