2017-10-12 13 views
0

文字列をDateTimeOffsetに変換しようとしています。ここに私の文字列の例があります2017/010/23:51:50 2017は年の年を表し、23:51:50は時間を表します。 私は以下の方法で試していますが、それは私に返信します0001-01-01 00:00:00.0000000 +00:00入力は常にありません。 マイコードC#、文字列をDateTimeOffsetに変換する

DateTimeOffset DateTime; 
string year = ("2017/010/23:51:50"); 
DateTimeOffset.TryParse(year, out DateTime); 

どうぞよろしくお願いします。

更新 わかりやすくするために、私は質問を残しませんでした。私の日付時刻.txtファイルの名前から曜日(2017 it could be 2002, 2001)を取得していて、その.txtファイルの内容から日時(010/23:51:50いくつかはオフセットあり、一部のコンテンツはありません)から取得しています。だから私の意見は常に同じではありません。これが明確になることを希望します

+0

* *の年の*と書いてみると、1から365のようになりますか? –

+2

* falseを返しました。無視しないでください。 Parse()を代わりに使用して、自分自身を正直にしてください。 –

+0

あなたは正しい@OfirWinegarten – Shaif

答えて

2

である第一は年/月/日を取得するためにdayOfTheYear値と年を使用し、その後で文字列を分割/と。次に、時間パラメータを分割し、それを使用してTimeSpanを取得し、以前に取得した日付に追加します。次に、新しく取得した日付を単にDateTimeOffsetに解析します。このコードは正常に動作するはずです:

 string year = ("2017/010/23:51:50"); 
     var date = year.Split('/'); 
     var timeSpanVal = date[2].ToString().Split(':').Select(x=>Convert.ToInt32(x)).ToList(); 
     TimeSpan ts = new TimeSpan(timeSpanVal[0], timeSpanVal[1], timeSpanVal[2]); 
     DateTime newDate = new DateTime(Convert.ToInt32(date[0]), 1, 1).AddDays(Convert.ToInt32(date[1]) - 1)+ts; 

     DateTimeOffset.TryParse(newDate.ToString(), out DateTime); 
+0

'DateTime'から' DateTimeOffset'に変換するために文字列を通過する必要はありません。ただし、使用するオフセットを知る必要があります。 –

1

date and time formatsを見ると、私はフォーマットYear/JulianDay/Timeを解析することはできません。何ができることの部分に文字列を分割して、年に日追加

string[] parts = year.Split('/'); 
DateTime dt = new DateTime(int.Parse(parts[0]), 1, 1); 
dt = dt.AddDays(int.Parse(parts[1]) - 1).Add(TimeSpan.Parse(parts[2])); 
関連する問題