digitalmars.D.learn - Adding days to std.datetime.Date

```Is it possible to add a particular number of days to a Date?

I have number of days since 1 Jan 2000 and I want to convert it to Date:

int days = read!int; // number of days since 1 Jan 2000
Date x = Date(2000, 1, 1);

Unfortunately add() does not support adding days. Will it be possible in
the future or is there another approach?

Thanks
```
Apr 07 2011
"Steven Schveighoffer" <schveiguy yahoo.com> writes:
```On Thu, 07 Apr 2011 15:07:02 -0400, Piotr Szturmaj <bncrbme jadamspam.pl>
wrote:

Is it possible to add a particular number of days to a Date?

I have number of days since 1 Jan 2000 and I want to convert it to Date:

int days = read!int; // number of days since 1 Jan 2000
Date x = Date(2000, 1, 1);

Unfortunately add() does not support adding days. Will it be possible in
the future or is there another approach?

Yes, use core.time.Duration.

Duration was moved to core so it could be used in core functions, like

so

x += dur!"days"(days);

See: http://www.digitalmars.com/d/2.0/phobos/core_time.html#dur

-Steve
```
Apr 07 2011
```Steven Schveighoffer wrote:
On Thu, 07 Apr 2011 15:07:02 -0400, Piotr Szturmaj

Is it possible to add a particular number of days to a Date?

I have number of days since 1 Jan 2000 and I want to convert it to Date:

int days = read!int; // number of days since 1 Jan 2000
Date x = Date(2000, 1, 1);

in the future or is there another approach?

Yes, use core.time.Duration.

Duration was moved to core so it could be used in core functions, like

so

x += dur!"days"(days);

See: http://www.digitalmars.com/d/2.0/phobos/core_time.html#dur

Well, I did find it few mins ago. But std.datetime's doc still states
that it provide types to represent durations of time.

-Steve

Thanks!
```
Apr 07 2011
=?UTF-8?B?IlRow6lv?= Bueno" <munrek gmx.com> writes:
```On Thursday, 7 April 2011 at 19:10:40 UTC, Piotr Szturmaj wrote:
Is it possible to add a particular number of days to a Date?

I have number of days since 1 Jan 2000 and I want to convert it
to Date:

int days = read!int; // number of days since 1 Jan 2000
Date x = Date(2000, 1, 1);

possible in the future or is there another approach?

Thanks

Is there any particular reason why std.datetime's "add" does not
support days ?
```
Dec 02 2014
"H. S. Teoh via Digitalmars-d-learn" <digitalmars-d-learn puremagic.com> writes:
```On Tue, Dec 02, 2014 at 05:21:27PM +0000, via Digitalmars-d-learn wrote:
On Thursday, 7 April 2011 at 19:10:40 UTC, Piotr Szturmaj wrote:
Is it possible to add a particular number of days to a Date?

I have number of days since 1 Jan 2000 and I want to convert it to
Date:

int days = read!int; // number of days since 1 Jan 2000
Date x = Date(2000, 1, 1);

in the future or is there another approach?

Thanks

Is there any particular reason why std.datetime's "add" does not
support days ?

Sure it does:

import std.datetime;
import std.stdio;

void main() {
auto date = Date(2000, 1, 1);
date += 10.days;
writeln(date);
}

Output:

2000-Jan-11

T

--
Heads I win, tails you lose.
```
Dec 02 2014
=?UTF-8?B?IlRow6lv?= Bueno" <munrek gmx.com> writes:
```On Tuesday, 2 December 2014 at 18:00:14 UTC, H. S. Teoh via
Digitalmars-d-learn wrote:
On Tue, Dec 02, 2014 at 05:21:27PM +0000, via
Digitalmars-d-learn wrote:
On Thursday, 7 April 2011 at 19:10:40 UTC, Piotr Szturmaj
wrote:
Is it possible to add a particular number of days to a Date?

I have number of days since 1 Jan 2000 and I want to convert
it to
Date:

int days = read!int; // number of days since 1 Jan 2000
Date x = Date(2000, 1, 1);

possible
in the future or is there another approach?

Thanks

Is there any particular reason why std.datetime's "add" does
not
support days ?

Sure it does:

import std.datetime;
import std.stdio;

void main() {
auto date = Date(2000, 1, 1);
date += 10.days;
writeln(date);
}

Output:

2000-Jan-11

T

Indeed, thank you :)

But still, why this method
"month" or "years" while this one
http://dlang.org/phobos/std_datetime.html#.Date.roll does ?
```
Dec 02 2014
=?UTF-8?B?IlRow6lv?= Bueno" <munrek gmx.com> writes:
``` But still, why this method
supports "month" or "years" while this one
http://dlang.org/phobos/std_datetime.html#.Date.roll does ?

But still, why this method
"month" or "years" while this one
http://dlang.org/phobos/std_datetime.html#.Date.roll does support
days ?*
```
Dec 02 2014
"H. S. Teoh via Digitalmars-d-learn" <digitalmars-d-learn puremagic.com> writes:
```On Tue, Dec 02, 2014 at 06:49:54PM +0000, via Digitalmars-d-learn wrote:
But still, why this method
or "years" while this one
http://dlang.org/phobos/std_datetime.html#.Date.roll does ?

But still, why this method
"month" or "years" while this one
http://dlang.org/phobos/std_datetime.html#.Date.roll does support days
?*

Hmm. Looks like an oversight. File a bug?

T

--
telescopes." -- E.W. Dijkstra
```
Dec 02 2014
Steven Schveighoffer <schveiguy yahoo.com> writes:
```On 12/2/14 2:00 PM, H. S. Teoh via Digitalmars-d-learn wrote:
On Tue, Dec 02, 2014 at 06:49:54PM +0000, via Digitalmars-d-learn wrote:
But still, why this method
or "years" while this one
http://dlang.org/phobos/std_datetime.html#.Date.roll does ?

But still, why this method
"month" or "years" while this one
http://dlang.org/phobos/std_datetime.html#.Date.roll does support days
?*

Hmm. Looks like an oversight. File a bug?

Not an oversight.

For example, how many days are in a month? Answer: depends on the month.
How many days in a year? Answer: depends on the year.

But days are NOT variable, there are exactly 24 hours in a day. So to

-Steve
```
Dec 02 2014
Steven Schveighoffer <schveiguy yahoo.com> writes:
```On 12/2/14 2:14 PM, Steven Schveighoffer wrote:

Not an oversight.

For example, how many days are in a month? Answer: depends on the month.
How many days in a year? Answer: depends on the year.

But days are NOT variable, there are exactly 24 hours in a day. So to

Aaaand to expand on this, since roll *does* support days, it's because
the number being added isn't the important unit, it's the unit above.
Hence rolling days means you will stay in the same month.

I'm not exactly sure of the reason behind roll, but I'm sure Jonathan
has one :)

-Steve
```
Dec 02 2014
=?UTF-8?B?IlRow6lv?= Bueno" <munrek gmx.com> writes:
```On Tuesday, 2 December 2014 at 19:21:35 UTC, Steven Schveighoffer
wrote:
On 12/2/14 2:14 PM, Steven Schveighoffer wrote:

Not an oversight.

For example, how many days are in a month? Answer: depends on
the month.
How many days in a year? Answer: depends on the year.

But days are NOT variable, there are exactly 24 hours in a
day. So to

Aaaand to expand on this, since roll *does* support days, it's
because the number being added isn't the important unit, it's
the unit above. Hence rolling days means you will stay in the
same month.

I'm not exactly sure of the reason behind roll, but I'm sure
Jonathan has one :)

-Steve

Oh well, this explanation make so much sense !

Unfortunately, I was not able to find it on the documentation :/

Thank you.
```
Dec 02 2014
Jonathan M Davis via Digitalmars-d-learn writes:
```On Tuesday, December 02, 2014 14:21:35 Steven Schveighoffer via
Digitalmars-d-learn wrote:
On 12/2/14 2:14 PM, Steven Schveighoffer wrote:

Not an oversight.

For example, how many days are in a month? Answer: depends on the month.
How many days in a year? Answer: depends on the year.

But days are NOT variable, there are exactly 24 hours in a day. So to

Aaaand to expand on this, since roll *does* support days, it's because
the number being added isn't the important unit, it's the unit above.
Hence rolling days means you will stay in the same month.

I'm not exactly sure of the reason behind roll, but I'm sure Jonathan
has one :)

A prime example of where to use it would be if you have a GUI with spinners
for the values, and you didn't want incrementing the day to increment the
month. It would be kind of annoying to implement that without roll. And
since you need to specify the units for rolling (and the addition operator
order to roll didn't make sense, and a separate function was needed for it
even for the smaller units. I don't remember if roll originated with Boost,
or if I came up with it though (since portions of std.datetime's API are
based on Boost - e.g. julianDay is only there because Boost had it, and
astronomers use it such that it seemed useful enough to have; I wouldn't
have come up with it on my own though).

- Jonathan M Davis
```
Dec 06 2014
Jonathan M Davis via Digitalmars-d-learn writes:
```On Tuesday, December 02, 2014 14:14:58 Steven Schveighoffer via
Digitalmars-d-learn wrote:
On 12/2/14 2:00 PM, H. S. Teoh via Digitalmars-d-learn wrote:
On Tue, Dec 02, 2014 at 06:49:54PM +0000, via Digitalmars-d-learn wrote:
But still, why this method
or "years" while this one
http://dlang.org/phobos/std_datetime.html#.Date.roll does ?

But still, why this method
"month" or "years" while this one
http://dlang.org/phobos/std_datetime.html#.Date.roll does support days
?*

Hmm. Looks like an oversight. File a bug?

Not an oversight.

For example, how many days are in a month? Answer: depends on the month.
How many days in a year? Answer: depends on the year.

But days are NOT variable, there are exactly 24 hours in a day. So to