我的意思是在DateTime變量中存儲嚴格的UTC時間並以ISO 8601格式輸出。如何設置日期時間值的時區(或種類)?
最後我做了.ToString(「yyyy-MM-ddTHH:mm:sszzz」),它發現時區是UTC + 01:00。
我試過使用.Kind = DateTimeKind.Utc,但它說Kind屬性沒有setter。
如何明確指定時間是UTC? Kind屬性如何設置?
我的意思是在DateTime變量中存儲嚴格的UTC時間並以ISO 8601格式輸出。如何設置日期時間值的時區(或種類)?
最後我做了.ToString(「yyyy-MM-ddTHH:mm:sszzz」),它發現時區是UTC + 01:00。
我試過使用.Kind = DateTimeKind.Utc,但它說Kind屬性沒有setter。
如何明確指定時間是UTC? Kind屬性如何設置?
雖然DateTime.Kind屬性沒有setter,但靜態方法DateTime.SpecifyKind會爲Kind創建一個具有指定值的DateTime實例。
Altenatively有幾個DateTime constructor overloads如果你想利用你的本地時區,您可以使用myDateTime.ToUniversalTime()
從本地時間或myDateTime.ToLocalTime()
獲得UTC時間UTC時間來轉換採取DateTimeKind參數
本地機器的時間。
// 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);
改變你想改變其標準時間的文本。
使用TimeZone
C#實現的功能。
'DateTimeKind'只包含本地,未指定和UTC。我想要使用一個特定的時區可能是不可能的。 – hardywang 2015-03-09 20:10:07
@hardywang如果你只需要指定一個時間和UTC的偏移量,那麼你可以使用[DateTimeOffset](https://msdn.microsoft.com/en-us/library/system.datetimeoffset.aspx)。如果您確實需要識別特定的時區,那麼您需要將DateTime與[TimeZoneInfo](https://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx)結合使用。請參閱[在DateTime,DateTimeOffset和TimeZoneInfo之間選擇](https://msdn.microsoft.com/en-us/library/bb384267.aspx)進行討論。 – 2015-03-15 05:53:48