2011-01-02 4 views
2

년 정보가없는 12/25와 같은 날짜를 나타내는 방법이 있습니까? 더 좋은 방법이 없다면 나는 단지 [month, year] 배열을 사용하려고 생각하고 있습니다.년 루비 날짜?

+3

'2/29'또는 '3/1'? –

+0

나는 strftime을 최고의 대답으로 사용하는 것을 받아 들였다. 사이트 http://www.foragoodstrtime.com은 날짜 형식 문자열을 생성하는 쉬운 방법입니다. –

+0

마이크, 사이트 URL에 오타가 있습니다. 그것은 foragoodstrftime.com이어야합니다. 나는 전에 그 사이트를 본 적이 없었습니다. 감사합니다! –

답변

3

당신 윤년에 해 설정 하드 Date 클래스를 사용 할 수있다. 두 날짜 사이에 '거리'계산을 수행해야하는 경우 편리합니다 (연도 경계를 넘어 서기를 필요로하지 않았다고 가정 할 때 꺼낼 때의 응답에 신경 쓰지 않는다고 가정 할 때 몇 년 동안 2/29를 잘못 교차).

원할 경우 #strftime을 사용하여 (예 : "Mar-3") 날짜를 표시 할 수 있기 때문에 편리 할 수도 있습니다.

사용법에 따라 다르긴하지만, 쌍을 이루는 배열 또는 YearlessDate = Struct.new(:month,:day)과 같이 명시 적으로 표현할 것입니다. 그렇게하면 위에서 언급 한 것과 같은 실수를 저 지르지 않을 것입니다.

그러나 실제로 한 해와 관련이없는 날짜는 없었습니다. 이 경우를 가정하면 @ SeanHill의 대답이 가장 좋습니다. 연도 정보를 유지하면서 적절하지 않을 때 사용자에게 표시하지 않습니다.

1

Time 클래스의 strftime 함수를 사용합니다. (당신이 원하는 경우에 당신이 2/29을 나타낼 수 있도록)

time = Time.now 
time.strftime("%m/%d") 
0

일년이 아닌 날짜를 나타내는 가장 정확한 방법은 001과 365 사이의 Fixnum입니다. 날짜로 바꾸지 않고 비교할 수 있으며 주어진 날짜에 대한 날짜를 쉽게 만들 수 있습니다 필요에 따라 Date.ordinal을 사용하여

+2

하지만 윤년이고 날짜가 2 월 29 일이면 어떨까요? –