2017-10-09 1 views
0

나는 미국 표준 시간대입니다. 다음 날짜를 C#을 사용하여 구문 분석하려고합니다. 다른 시스템에서받는 다음 입력 날짜에 대해 사용자에게 표시되어야하는 올바른 값은 무엇입니까?정확한 날짜 시간 값 표시

1.2017-10-04T16:24:55.000-04:00 

2.2017-10-04T13:14:35.000+04:00 

감사합니다.

+2

당신이 묻는 것이 불분명합니다. 1 시간은 UTC보다 4 시간 앞이고, 다른 하나는 4 시간 뒤입니다. [DateTime.TryParseExact] (https://msdn.microsoft.com/en-us/library/system.datetime.tryparseexact (v = vs.110) .aspx)를 사용하여 이들을 'DateTime'으로 변환 할 수 있습니다. 최종 사용자가 표시되는 방법은 최종 사용자의 위치에 따라 다릅니다. –

답변

0

사용자에게 날짜를 표시하고 시간대를 고려해야 할 경우 정확히 NodaTime과 같은 라이브러리를 사용하는 것이 좋습니다. UTC 차이점을 제외하고는 지역별 DST도 고려해야하며 제 3 자 라이브러리를 사용하지 않고도 정확하게 작업 할 수있는 일반적인 악몽입니다.

1

우선 DateTime을 사용하지 말고 DateTimeOffset (또는 언급 한 @DiskJunky와 같은 일부 NodaTime 유형)을 사용하십시오. 이것은 주어진 시간 오프셋으로 각 값을 파싱/저장할 수있게합니다.

귀하의 제공 텍스트는 기본 구문 분석과 잘 작동합니다 :

string test1 = "2017-10-04T16:24:55.000-04:00"; 
string test2 = "2017-10-04T13:14:35.000+04:00"; 

DateTimeOffset dateTime; 
if (DateTimeOffset.TryParse(test1, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) 
{ 
    Console.WriteLine("Date 1: " + dateTime); 
} 
if (DateTimeOffset.TryParse(test2, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) 
{ 
    Console.WriteLine("Date 2: " + dateTime); 
} 

시간 값이 DateTimeOffset로 구문 분석 할 때 당신은 변환 할 수 있습니다 예를 들어 ... 그들에게 당신이 원하는 방식으로 표시, 당신의 미 조정 시간을 얻을 dateTime.ToLocalTime()으로 설정하거나 dateTime.ToUniversalTime()으로 국제 교환 용이성을 얻으십시오.