2017-10-09 5 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時間遅れ、もう1時間は4時間遅れです。 [DateTime.TryParseExact](https://msdn.microsoft.com/en-us/library/system.datetime.tryparseexact(v = vs.110).aspx)を使用して、それらを「DateTime」に変換できます。それらをどのように表示するかは、エンドユーザーの所在によって異なります。 –

答えて

0

正確には、ユーザに日付を表​​示し、タイムゾーンを考慮する必要がある場合はNodaTimeのようなライブラリを使用することをお勧めします。 UTCの違いとは別に、地域DSTも考慮する必要があります。サードパーティのライブラリを使用せずに正確に作業するのは一般的な悪夢です。

1

まず、DateTimeを使用しないでください。ただし、DateTimeOffset(または、@DiskJunkyと記載されているNodaTimeタイプ)を使用してください。これにより、与えられた時間オフセットで各値を解析/保存することができます。

ご提供テキストがデフォルトの解析でうまく動作するはずです:時間の値は、あなたが好きなように変換して表示することができDateTimeOffsetとして解析された場合

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

...例えば、あなたの米国は、時間を調整しますdateTime.ToLocalTime()と交換するか、dateTime.ToUniversalTime()で国際交換可能な値を取得してください。

関連する問題