Thread overview | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
April 07, 2011 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); x.add!"days"(days); Unfortunately add() does not support adding days. Will it be possible in the future or is there another approach? Thanks |
April 07, 2011 Re: Adding days to std.datetime.Date | ||||
---|---|---|---|---|
| ||||
Posted in reply to Piotr Szturmaj | 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); > x.add!"days"(days); > > 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 Thread.sleep. so x += dur!"days"(days); See: http://www.digitalmars.com/d/2.0/phobos/core_time.html#dur -Steve |
April 07, 2011 Re: Adding days to std.datetime.Date | ||||
---|---|---|---|---|
| ||||
Posted in reply to Steven Schveighoffer | Steven Schveighoffer wrote: > 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); >> x.add!"days"(days); >> >> 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 > Thread.sleep. > > 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! |
December 02, 2014 Re: Adding days to std.datetime.Date | ||||
---|---|---|---|---|
| ||||
Posted in reply to Piotr Szturmaj | 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);
> x.add!"days"(days);
>
> Unfortunately add() does not support adding days. Will it be possible in the future or is there another approach?
>
> Thanks
Is there any particular reason why std.datetime's "add" does not support days ?
|
December 02, 2014 Re: Adding days to std.datetime.Date | ||||
---|---|---|---|---|
| ||||
Posted in reply to Théo Bueno | 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); > >x.add!"days"(days); > > > >Unfortunately add() does not support adding days. Will it be 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 -- Heads I win, tails you lose. |
December 02, 2014 Re: Adding days to std.datetime.Date | ||||
---|---|---|---|---|
| ||||
Posted in reply to H. S. Teoh | 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); >> >x.add!"days"(days); >> > >> >Unfortunately add() does not support adding days. Will it be 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 http://dlang.org/phobos/std_datetime.html#.Date.add only supports "month" or "years" while this one http://dlang.org/phobos/std_datetime.html#.Date.roll does ? |
December 02, 2014 Re: Adding days to std.datetime.Date | ||||
---|---|---|---|---|
| ||||
Posted in reply to Théo Bueno | > But still, why this method http://dlang.org/phobos/std_datetime.html#.Date.add only supports "month" or "years" while this one http://dlang.org/phobos/std_datetime.html#.Date.roll does ? But still, why this method http://dlang.org/phobos/std_datetime.html#.Date.add only supports "month" or "years" while this one http://dlang.org/phobos/std_datetime.html#.Date.roll does support days ?* |
December 02, 2014 Re: Adding days to std.datetime.Date | ||||
---|---|---|---|---|
| ||||
Posted in reply to Théo Bueno | On Tue, Dec 02, 2014 at 06:49:54PM +0000, via Digitalmars-d-learn wrote: > >But still, why this method http://dlang.org/phobos/std_datetime.html#.Date.add only supports "month" or "years" while this one http://dlang.org/phobos/std_datetime.html#.Date.roll does ? > > But still, why this method http://dlang.org/phobos/std_datetime.html#.Date.add only supports "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 -- "Computer Science is no more about computers than astronomy is about telescopes." -- E.W. Dijkstra |
December 02, 2014 Re: Adding days to std.datetime.Date | ||||
---|---|---|---|---|
| ||||
Posted in reply to H. S. Teoh | 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
>>> http://dlang.org/phobos/std_datetime.html#.Date.add only supports "month"
>>> or "years" while this one
>>> http://dlang.org/phobos/std_datetime.html#.Date.roll does ?
>>
>> But still, why this method
>> http://dlang.org/phobos/std_datetime.html#.Date.add only supports
>> "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.
Date.add and Date.roll are for adding units that are variable.
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 add a day, you just add a day with +=.
-Steve
|
December 02, 2014 Re: Adding days to std.datetime.Date | ||||
---|---|---|---|---|
| ||||
Posted in reply to Steven Schveighoffer | On 12/2/14 2:14 PM, Steven Schveighoffer wrote:
> Not an oversight.
>
> Date.add and Date.roll are for adding units that are variable.
>
> 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
> add a day, you just add a day with +=.
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
|
Copyright © 1999-2021 by the D Language Foundation