2017-10-12 145 views
0

我想將一個字符串轉換爲DateTimeOffset。這裏是我的字符串示例2017/010/23:51:50 2017表示010年代表一年中的某一天,23:51:50代表時間。 我正在嘗試以下方式,但它返回我0001-01-01 00:00:00.0000000 +00:00始終沒有mater輸入。 我的代碼C#,將字符串轉換爲DateTimeOffset

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

有什麼建議嗎?

更新 爲簡單起見,我沒有留下我的問題。我的日期時間是從.txt文件的名稱獲得年份(2017 it could be 2002, 2001),並從該文件的內容獲取日期和時間(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]));