当前位置: 首页 > 编程语言 > C#

将UTC日期时间转换为另一个时区分享

时间:2023-04-10 20:22:58 C#

将UTC日期时间转换为另一个时区我有来自数据库记录的UTC日期时间值。我还有一个用户指定的时区(TimeZoneInfo的一个实例)。如何将UTCDateTime转换为用户的本地时区?另外,如何确定用户指定的时区当前是否正在观察夏令时?我正在使用.NET3.5。谢谢,马克看一下DateTimeOffset结构://用户指定的时区TimeZoneInfosouthPole=TimeZoneInfo.FindSystemTimeZoneById("Antarctica/SouthPoleStandardTime");//一个UTCDateTimeDateTimeutcTime=newDateTime(2007,07,12,06,32,00,DateTimeKind.Utc);//带偏移量的日期时间DateTimeOffsetdateAndOffset=newDateTimeOffset(utcTime,southPole.GetUtcOffset(utcTime));Console.WriteLine(dateAndOffset);对于DST,请参阅TimeZoneInfo.IsDaylightSavingTime方法。boolisDst=southpole.IsDaylightSavingTime(DateTime.UtcNow);最好的方法是使用TimeZoneInfo.ConvertTimeFromUtc。//你说你已经有了这些DateTimeutc=newDateTime(2014,6,4,12,34,0);TimeZoneInfotzi=TimeZoneInfo.FindSystemTimeZoneById("太平洋标准时间");//这是一个简单的单行DateTimepacific=TimeZoneInfo.ConvertTimeFromUtc(utc,tzi);唯一的问题是传入的DateTime值可能没有DateTimeKind.Local类型。它必须是Utc或未指定。如果要将DateTimeOffset转换为另一个DateTimeOffset,可以使用TimeZoneInfo中的专用函数:Antartica答案仅适用于匹配UTC的时区。这个DateTimeOffset函数给我带来了很多创伤,经过数小时的反复试验,我成功地生成了一个适用于所有时区的有用的转换扩展函数。staticpublicclassDateTimeFunctions{staticpublicDateTimeOffsetConvertUtcTimeToTimeZone(thisDateTimedateTime,stringtoTimeZoneDesc){if(dateTime.Kind!=DateTimeKind.Utc)thrownewException("dateTime需要将Kind属性设置为Utc");vartoUtcZonefset.FindSystemTimeZoneById(toTimeZoneDesc).GetUtcOffset(dateTime);varconvertedTime=DateTime.SpecifyKind(dateTime.Add(toUtcOffset),DateTimeKind.Unspecified);返回新的DateTimeOffset(convertedTime,toUtcOffset);}}UTCDateTime转换为另一个时区以共享所有内容。如果对你有用,需要了解更多C#学习教程,希望大家多多关注——varcurrentTimeInPacificTime=DateTime.UtcNow.ConvertUtcTimeToTimeZone("太平洋标准时间");//获取系统当前时区的当前时间vardt=DateTime.Now;控制台.WriteLine(dt);//显示系统的时区Console.WriteLine(TimeZoneInfo.Local);//将当前日期时间转换为UTC日期时间varutc=TimeZoneInfo.ConvertTimeToUtc(dt,TimeZoneInfo.Local);控制台.WriteLine(utc);//将UTC时间转换为当前时区DateTimepacific=TimeZoneInfo.ConvertTimeFromUtc(utc,TimeZoneInfo.Local);Console.WriteLine(太平洋);控制台.ReadLine();网络收藏不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: