DateTime変数に厳密なUTC時間を保存し、ISO 8601形式で出力することを意味します。
最後に、.ToString( "yyyy-MM-ddTHH:mm:sszzz")を使用しましたが、タイムゾーンがUTC + 01:00であることがわかりました。
.Kind = DateTimeKind.Utcを使用しようとしましたが、Kindプロパティにはセッターがありません。
UTCの時刻を明示的に指定するにはどうすればよいですか? Kindプロパティはどのように設定されますか?
DateTime.Kindプロパティにはセッターがありませんが、静的メソッド DateTime.SpecifyKind は、Kindに指定された値を持つDateTimeインスタンスを作成します。
別の方法として、DateTimeKindパラメータを取る複数の DateTimeコンストラクタオーバーロード があります
ローカルマシンのタイムゾーンを利用したい場合は、myDateTime.ToUniversalTime()
を使用してローカル時間からUTC時間を取得するか、myDateTime.ToLocalTime()
を使用してUTC時間をローカルマシンの時間に変換できます。
_// convert UTC time from the database to the machine's time
DateTime databaseUtcTime = new DateTime(2011,6,5,10,15,00);
var localTime = databaseUtcTime.ToLocalTime();
// convert local time to UTC for database save
var databaseUtcTime = localTime.ToUniversalTime();
_
他のタイムゾーンとの間で時間を変換する必要がある場合は、TimeZoneInfo.ConvertTime()
またはTimeZoneInfo.ConvertTimeFromUtc()
を使用できます。
_// convert UTC time from the database to japanese time
DateTime databaseUtcTime = new DateTime(2011,6,5,10,15,00);
var japaneseTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
var japaneseTime = TimeZoneInfo.ConvertTimeFromUtc(databaseUtcTime, japaneseTimeZone);
// convert japanese time to UTC for database save
var databaseUtcTime = TimeZoneInfo.ConvertTimeToUtc(japaneseTime, japaneseTimeZone);
_
これも試してみてください、実装は簡単です
TimeZone time2 = TimeZone.CurrentTimeZone;
DateTime test = time2.ToUniversalTime(DateTime.Now);
var singapore = TimeZoneInfo.FindSystemTimeZoneById("Singapore Standard Time");
var singaporetime = TimeZoneInfo.ConvertTimeFromUtc(test, singapore);
変更する標準時間のテキストを変更します。
C#のTimeZone
機能を使用して実装します。