Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DateTime RoundUp(DateTime dt, TimeSpan d)
- {
- return new DateTime(((dt.Ticks + d.Ticks - 1) / d.Ticks) * d.Ticks);
- }
- var dt1 = RoundUp(DateTime.Parse("2011-08-11 16:59"), TimeSpan.FromMinutes(15));
- // dt1 == {11/08/2011 17:00:00}
- var dt2 = RoundUp(DateTime.Parse("2011-08-11 17:00"), TimeSpan.FromMinutes(15));
- // dt2 == {11/08/2011 17:00:00}
- var dt3 = RoundUp(DateTime.Parse("2011-08-11 17:01"), TimeSpan.FromMinutes(15));
- // dt3 == {11/08/2011 17:15:00}
- void Main()
- {
- var date1 = new DateTime(2011, 8, 11, 16, 59, 00);
- date1.Round15().Dump();
- var date2 = new DateTime(2011, 8, 11, 17, 00, 02);
- date2.Round15().Dump();
- var date3 = new DateTime(2011, 8, 11, 17, 01, 23);
- date3.Round15().Dump();
- var date4 = new DateTime(2011, 8, 11, 17, 00, 00);
- date4.Round15().Dump();
- }
- public static class Extentions
- {
- public static DateTime Round15(this DateTime value)
- {
- var ticksIn15Mins = TimeSpan.FromMinutes(15).Ticks;
- return (value.Ticks % ticksIn15Mins == 0) ? value : new DateTime((value.Ticks / ticksIn15Mins + 1) * ticksIn15Mins);
- }
- }
- 8/11/2011 5:00:00 PM
- 8/11/2011 5:15:00 PM
- 8/11/2011 5:15:00 PM
- 8/11/2011 5:00:00 PM
- dt.AddSeconds(900 - (x.Minute * 60 + x.Second) % 900)
- public static class DateTimeExtensions
- {
- public static DateTime Round( this DateTime value , TimeSpan unit )
- {
- return Round( value , unit , default(MidpointRounding) ) ;
- }
- public static DateTime Round( this DateTime value , TimeSpan unit , MidpointRounding style )
- {
- if ( unit <= TimeSpan.Zero ) throw new ArgumentOutOfRangeException("unit" , "value must be positive") ;
- Decimal units = (decimal) value.Ticks / (decimal) unit.Ticks ;
- Decimal roundedUnits = Math.Round( units , style ) ;
- long roundedTicks = (long) roundedUnits * unit.Ticks ;
- DateTime instance = new DateTime( roundedTicks ) ;
- return instance ;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement