2009-05-15 27 views
6

問題:365(366)を介して、今年の日、1年続いているYYYYDDDの形式で序日付形式のC#

あなたが与えられた日付、。たとえば、今日は2009135(5/15/2009)となります。

これで新しい日時を作成する最も良い方法は何ですか? Rubyでは、私はそう

Date.ordinal(2009, 135) 

C#のための同様のコンストラクタがありますように2つの数値を取るコンストラクタがあると知っていますか?

答えて

10

うーん、私はもっと直接的な方法があるかどうかわからないが、これはどの程度

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

を動作するはずです:これは2009001として表現されている2009年の1日目に依存している

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

むしろ20091。後者の場合は、少し難解です(もちろん厳密には厳しいわけではありませんが)。

私はこのような形式からかなり早く離れようとしますが、それはまったく一般的ではありません。完全に判読できません。 「2009001」形式を仮定すると、それは少なくとも合理的に分類されますが、私はそれ以外にはそれほど多くのことを考えることはできません。

+0

私はそれを変換しています。これは私たちに手渡されているところです。私たちはそのフォーマットを取ってデータベースにインポートしますが、通常のdatetimeに変換します。 Btw、私はあなたの答えが好きです、それは最初の答えのようにそれをするヒットが、私はむしろ1つの行でそれをやりたいです。私の中のRubyを推測してください。そして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);