Created
October 13, 2017 22:39
-
-
Save EgorBo/6bb55b4672f273399fbb68bf340a1d4a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
namespace ConsoleApp4 | |
{ | |
class Program | |
{ | |
private static TimeZoneInfo.TransitionTime CreateFixedDateRule(DateTime dateTime) | |
{ | |
var time = new DateTime(dateTime.Ticks - dateTime.Date.Ticks); | |
return TimeZoneInfo.TransitionTime.CreateFixedDateRule(time, dateTime.Month, dateTime.Day); | |
} | |
static void Main(string[] args) | |
{ | |
var dst1Start = new DateTime(2014, 5, 16); | |
var dst1End = new DateTime(2014, 6, 29); | |
var dst2Start = new DateTime(2014, 7, 29); | |
var dst2End = new DateTime(2014, 9, 26); | |
var baseUtcOffset = new TimeSpan(2, 0, 0); | |
var dstUtcOffset = new TimeSpan(3, 0, 0); | |
var dstOffset = dstUtcOffset - baseUtcOffset; | |
var rule1 = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule( | |
new DateTime(2014, 1, 1), new DateTime(2014, 6, 30), dstOffset, | |
CreateFixedDateRule(dst1Start), CreateFixedDateRule(dst1End)); | |
var rule2 = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule( | |
new DateTime(2014, 7, 1), new DateTime(2014, 12, 31), dstOffset, | |
CreateFixedDateRule(dst2Start), CreateFixedDateRule(dst2End)); | |
var cairo = TimeZoneInfo.CreateCustomTimeZone("Africa/Cairo", baseUtcOffset, "Africa/Cairo", "EET", "EEST", new[] { rule1, rule2 }); | |
Console.WriteLine(cairo.GetUtcOffset(dst1End.Add(-dstOffset))); | |
//MONO: 03:00:00 | |
//.NET and .NET Core: 02:00:00 | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment