现在是墨尔本时间下午5:30。在洛杉矶,它是12:30 AM。
此时创建数据库记录。它有一个" creation_datetime"时间戳。
当墨尔本的顾客查看时间戳时,我想显示" 2016-07-04 17:30(UTC + 10:00)"。当洛杉矶的顾客看时间时,我想显示" 2016-07-04 00:30(UTC-8:00)"。
让我们假设功能" getRecordTimeStamp(123)"将该时间戳记作为 DateTime 返回,其中" 123"是记录ID。如何生成" 2016-07-04 17:30(UTC + 10:00)"和" 2016-07-04 00:30(UTC-8:00)"在C#?
答案 0 :(得分:0)
我解决了这个问题:
DateTime now = DateTime.Now;
DateTime utcTimeNow = TimeZoneInfo.ConvertTimeToUtc(now);
TimeZoneInfo melbourneTimeZone = TimeZoneInfo.FindSystemTimeZoneById("E. Australia Standard Time");
DateTime melbourneTime = TimeZoneInfo.ConvertTimeFromUtc(utcTimeNow, melbourneTimeZone);
Console.WriteLine("The date and time are {0} {1}.", melbourneTime, melbourneTimeZone.IsDaylightSavingTime(melbourneTime) ? melbourneTimeZone.DaylightName : melbourneTimeZone.StandardName);
TimeZoneInfo laTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
DateTime laTime = TimeZoneInfo.ConvertTimeFromUtc(utcTimeNow, laTimeZone);
Console.WriteLine("The date and time are {0} {1}.", laTime, laTimeZone.IsDaylightSavingTime(laTime) ? laTimeZone.DaylightName : laTimeZone.StandardName);
Console.ReadKey();