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 파일의 이름 (010/23:51:50 일부는 오프셋되고 일부 내용은 그렇지 않음)에서 연도 (2017 it could be 2002, 2001)를 얻는 나의 날짜 시간 .txt 파일의 내용에서. 따라서 필자의 의견은 항상 같지는 않습니다. 이것은 명확히하기를 바란다.

+0

* 일년 * 일이라고 할 때, 1에서 365까지를 의미합니까? –

+2

* false *를 반환하고 절대 무시하지 마십시오. Parse() 대신 자신을 정직하게 사용하십시오. –

+0

당신은 정확합니다 @OfirWinegarten – Shaif

답변

2

먼저 분할 일을 추가 /된다. 다음으로 시간 매개 변수를 분할하고이를 사용하여 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 형식을 구문 분석 할 수 있다고 생각하지 않는다. 당신이 할 수있는 것은 부분으로 문자열을 분할 한 후 년/월/일을 얻기 위해 dayOfTheYear 값과 연도를 사용 그때까지 문자열 년에

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]));