View mode: basic / threaded / horizontal-split · Log in · Help
September 20, 2012
std.datetime TimeOfDay missing 'add' method?
TimeOfDay's roll function refers to an add method which would 
increment or decrement the next greater unit of time when it 
wraps a unit of time. This method seems to be absent, while 
DateTime has it.
September 20, 2012
Re: std.datetime TimeOfDay missing 'add' method?
Actually I see DateTime's method is days and months only, why 
aren't hours, minutes and seconds available?
September 20, 2012
Re: std.datetime TimeOfDay missing 'add' method?
On 09/20/2012 09:02 AM, ixid wrote:
> TimeOfDay's roll function refers to an add method

I see how "The difference between rolling and adding ..." implies that 
there is also an add() function just like there is a roll() function. In 
fact, adding is handled simply by operator overloading. You can add 
Duration objects:

  t += duration;
  auto newTime = t + duration;

Ali
September 20, 2012
Re: std.datetime TimeOfDay missing 'add' method?
On Thursday, September 20, 2012 18:02:04 ixid wrote:
> TimeOfDay's roll function refers to an add method which would
> increment or decrement the next greater unit of time when it
> wraps a unit of time. This method seems to be absent, while
> DateTime has it.

Create a Duration and use +. e.g.

auto t = timeOfDay + dur!"seconds"(12);

Maybe rolling's docs aren't clear enough, but they never actually mention an 
add function. They mention adding but not an add function.

An add method exists on SysTime, DateTime, and Date only because you can't 
have a Duration of anything greater than weeks, because you can't convert 
between months and smaller units without a specific date. So, a separate 
function is needed. Everything else uses the arithmetic operators.

- Jonathan M Davis
Top | Discussion index | About this forum | D home