我的意思是在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