2009-05-15 3 views
6

문제 : 365 (366)를 통해 올해의 매일, 다음 연도 YYYYDDD의 형식에서수 날짜 형식 C#을

당신은 주어진 날짜. 예를 들어 오늘은 2009135 (5/15/2009)입니다.

여기서 새 datetime을 만드는 가장 좋은 방법은 무엇입니까? 루비 나는 그렇게

Date.ordinal(2009, 135) 

처럼 두 개의 번호를 사용하는 생성자가 C 번호와 유사한 생성자가 있나요 알아?

답변

10

흠, 내가 더 직접적인 방법이 있는지 잘 모르겠지만,이 작업을해야합니다에 대해 어떻게

new DateTime(year, 1, 1).AddDays(day - 1); 
3

:이 일에 의존

new DateTime(ordinal/1000, 1, 1).AddDays((ordinal % 1000) - 1); 

2009 년 1 2009001로 표현되는 오히려 20091. 후자 인 경우 다소 까다 롭습니다 (당연히 정확하게 어렵지는 않지만).

필자는 그러한 형식을 상당히 빨리 없애려고 노력할 것입니다. 정확히 공통된 것은 아니며 완전히 읽을 수 없습니다. "2009001"형식을 가정하면 적어도 합리적으로 정렬되지만, 그다지 그럴만 한 가치가 있다고 생각하지는 않습니다.

+0

오, 날 믿어. 그래서 나는 그것을 바꿀거야. 이것은 우리에게 넘겨지는 방법입니다. 우리는이 포맷을 가져 와서 데이터베이스로 가져 오지만, 그것을 일반 datetime으로 변환합니다. Btw, 나는 당신의 대답을 좋아합니다, 그것은 첫 번째 대답처럼 그것을하기 위해 나를 때렸다. 그러나 나는 한 줄로 그것을하려고한다. 루비를 맞춰보세요. 그리고 yah는 YYYYddd 형식으로 항상 나오고 있습니다. – taelor

+0

btw, 나는 실제로 다른 사람에게 답을주었습니다. 그는 단지 4k 포인트를 얻었고 나는 그 사랑을 나누고 싶다. – taelor

+0

문제 없음 - 나는 15를 잃는 것이 나에게 너무 많은 상처를 줄 것이라고 생각하지 않는다. :) –

1
int year = 2009; 
int month = 1; 
int day = 1; 
int dayOfYear= 135; 

DateTime myDate = new DateTime(year, month, day); 
myDate.AddDays(dayOfYear - 1);