Advertisement
Guest User

DateTime Round Kind fix

a guest
Mar 30th, 2015
417
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.12 KB | None | 0 0
  1. void Main()
  2. {
  3.     //Extensions.EnableKindFix = true;
  4.     var now = DateTime.Now.RoundToNearest(TimeSpan.FromMinutes(1));
  5.     Console.WriteLine(now + " --- " + now.Kind);
  6.     var nowFT = now.ToFileTimeUtc();
  7.     var nowDT = DateTime.FromFileTime(nowFT);
  8.     Console.WriteLine(nowDT);
  9. }
  10.  
  11. static class Extensions
  12. {
  13.     public static bool EnableKindFix { get; set; }
  14.  
  15.     public static DateTime RoundUp(this DateTime dt, TimeSpan d)
  16.     {
  17.         var delta = (d.Ticks - (dt.Ticks % d.Ticks)) % d.Ticks;
  18.         return EnableKindFix
  19.             ? new DateTime(dt.Ticks + delta, dt.Kind)
  20.             : new DateTime(dt.Ticks + delta);
  21.     }
  22.  
  23.     public static DateTime RoundDown(this DateTime dt, TimeSpan d)
  24.     {
  25.         var delta = dt.Ticks % d.Ticks;
  26.         return EnableKindFix
  27.             ? new DateTime(dt.Ticks - delta, dt.Kind)
  28.             : new DateTime(dt.Ticks - delta);
  29.     }
  30.  
  31.     public static DateTime RoundToNearest(this DateTime dt, TimeSpan d)
  32.     {
  33.         var delta = dt.Ticks % d.Ticks;
  34.         bool roundUp = delta > d.Ticks / 2;
  35.  
  36.         return roundUp ? dt.RoundUp(d) : dt.RoundDown(d);
  37.     }
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement