DateTimeOffset - ConvertTimeBySystemTimeZoneId
Converts a time to the time in another time zone based on the time zone's identifier.
public static void Main() { // Define times to be converted. DateTime time1 = new DateTime(2018, 1, 1, 12, 1, 0); DateTime time2 = new DateTime(2018, 11, 6, 23, 30, 0); DateTimeOffset[] times = { new DateTimeOffset(time1, TimeZoneInfo.Local.GetUtcOffset(time1)), new DateTimeOffset(time1, TimeSpan.Zero), new DateTimeOffset(time2, TimeZoneInfo.Local.GetUtcOffset(time2)), new DateTimeOffset(time2.AddHours(3), TimeZoneInfo.Local.GetUtcOffset(time2.AddHours(3))) }; // Display the current time zone name. Console.WriteLine("Local time zone: {0}\n", TimeZoneInfo.Local.DisplayName); // Convert each time in the array. foreach (DateTimeOffset timeToConvert in times) { // C# Extension Method: DateTimeOffset - ConvertTimeBySystemTimeZoneId DateTimeOffset targetTime = timeToConvert.ConvertTimeBySystemTimeZoneId("Tokyo Standard Time"); Console.WriteLine("Converted {0} to {1}.", timeToConvert, targetTime); } }
View Source
using System; public static partial class Extensions { /// <summary> /// Converts a time to the time in another time zone based on the time zone's identifier. /// </summary> /// <param name="dateTimeOffset">The date and time to convert.</param> /// <param name="destinationTimeZoneId">The identifier of the destination time zone.</param> /// <returns>The date and time in the destination time zone.</returns> public static DateTimeOffset ConvertTimeBySystemTimeZoneId(this DateTimeOffset dateTimeOffset, String destinationTimeZoneId) { return TimeZoneInfo.ConvertTimeBySystemTimeZoneId(dateTimeOffset, destinationTimeZoneId); } }