DateTimeOffset - ConvertTime
Converts a time to the time in a particular time zone.
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))) }; // Retrieve the time zone for Tokyo Standard Time (Japan). TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time"); // 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 - ConvertTime DateTimeOffset targetTime = timeToConvert.ConvertTime(tst); 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 a particular time zone. /// </summary> /// <param name="dateTimeOffset">The date and time to convert.</param> /// <param name="destinationTimeZone">The time zone to convert to.</param> /// <returns>The date and time in the destination time zone.</returns> public static DateTimeOffset ConvertTime(this DateTimeOffset dateTimeOffset, TimeZoneInfo destinationTimeZone) { return TimeZoneInfo.ConvertTime(dateTimeOffset, destinationTimeZone); } }