1800 + 0100として時刻を含むvarcharデータ型のテーブルにフィールドがありますが、この19:00 GMTのように表示するにはどうすればよいですか?1800 + 0100として時間がかかり、19:00に変換されるC#メソッドはありますか?
前もって感謝します。どんな助けでも大歓迎です。
時間が実際にISO-8601 形式である場合、これを行うことができます。
DateTime dt = DateTime.ParseExact("1800+0100", "HHmmzzz", null,
DateTimeStyles.AdjustToUniversal);
Console.WriteLine(dt.TimeOfDay); // 17:00:00
ただし、これは (正しく) "19:00:00"ではなく"17:00:00"を出力することに注意してください。
文字列が ISO-8601 形式ではなく、"1800+0100"が実際には 19:00 GMT を表す場合は、文字列を手動で解析するか、渡す前に前処理する必要があります。にParseExact
。おそらく次のようなものです:
string s = "1800+0100";
string temp = s.Substring(0, 4) + ((s[4] == '+') ? '-' : '+') + s.Substring(5);
DateTime dt = DateTime.ParseExact(temp, "HHmmzzz", null,
DateTimeStyles.AdjustToUniversal);
Console.WriteLine(dt.TimeOfDay); // 19:00:00
ただし、英国では冬と夏の夏時間にのみGMT(UniversalTime)を使用することに注意してください。
このDateTime
クラスは、オブジェクトのAdd
メソッドをサポートしていDateTime
ます。必要な時間の単位を追加することで、ある時間を別の時間に変換できます。
これにはDateTimeOffsetを使用できます。まず、時間とオフセットからインスタンスを作成し、次にUtcDateTimeプロパティをフェッチします。