2

1800 + 0100として時刻を含むvarcharデータ型のテーブルにフィールドがありますが、この19:00 GMTのように表示するにはどうすればよいですか?1800 + 0100として時間がかかり、19:00に変換されるC#メソッドはありますか?

前もって感謝します。どんな助けでも大歓迎です。

4

4 に答える 4

5

時間が実際に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
于 2011-02-02T10:26:52.183 に答える
0

ただし、英国では冬と夏の夏時間にのみGMT(UniversalTime)を使用することに注意してください。

于 2011-02-02T10:34:38.560 に答える
0

このDateTimeクラスは、オブジェクトのAddメソッドをサポートしていDateTimeます。必要な時間の単位を追加することで、ある時間を別の時間に変換できます。

于 2011-02-02T10:20:02.380 に答える
0

これにはDateTimeOffsetを使用できます。まず、時間とオフセットからインスタンスを作成し、次にUtcDateTimeプロパティをフェッチします。

于 2011-02-02T10:25:30.460 に答える