Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Main()
- {
- //Extensions.EnableKindFix = true;
- var now = DateTime.Now.RoundToNearest(TimeSpan.FromMinutes(1));
- Console.WriteLine(now + " --- " + now.Kind);
- var nowFT = now.ToFileTimeUtc();
- var nowDT = DateTime.FromFileTime(nowFT);
- Console.WriteLine(nowDT);
- }
- static class Extensions
- {
- public static bool EnableKindFix { get; set; }
- public static DateTime RoundUp(this DateTime dt, TimeSpan d)
- {
- var delta = (d.Ticks - (dt.Ticks % d.Ticks)) % d.Ticks;
- return EnableKindFix
- ? new DateTime(dt.Ticks + delta, dt.Kind)
- : new DateTime(dt.Ticks + delta);
- }
- public static DateTime RoundDown(this DateTime dt, TimeSpan d)
- {
- var delta = dt.Ticks % d.Ticks;
- return EnableKindFix
- ? new DateTime(dt.Ticks - delta, dt.Kind)
- : new DateTime(dt.Ticks - delta);
- }
- public static DateTime RoundToNearest(this DateTime dt, TimeSpan d)
- {
- var delta = dt.Ticks % d.Ticks;
- bool roundUp = delta > d.Ticks / 2;
- return roundUp ? dt.RoundUp(d) : dt.RoundDown(d);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement