Mercurial > hg > octave-nkf
annotate scripts/time/datenum.m @ 20372:2645f9ef8c88 stable
doc: Update more docstrings to have one sentence summary as first line.
Reviewed specfun, special-matrix, testfun, and time script directories.
* scripts/specfun/expint.m, scripts/specfun/isprime.m,
scripts/specfun/legendre.m, scripts/specfun/primes.m,
scripts/specfun/reallog.m, scripts/specfun/realsqrt.m,
scripts/special-matrix/gallery.m, scripts/special-matrix/hadamard.m,
scripts/special-matrix/hankel.m, scripts/special-matrix/hilb.m,
scripts/special-matrix/invhilb.m, scripts/special-matrix/magic.m,
scripts/special-matrix/pascal.m, scripts/special-matrix/rosser.m,
scripts/special-matrix/toeplitz.m, scripts/special-matrix/vander.m,
scripts/special-matrix/wilkinson.m, scripts/testfun/assert.m,
scripts/testfun/demo.m, scripts/testfun/example.m, scripts/testfun/fail.m,
scripts/testfun/rundemos.m, scripts/testfun/runtests.m,
scripts/testfun/speed.m, scripts/time/asctime.m, scripts/time/calendar.m,
scripts/time/clock.m, scripts/time/ctime.m, scripts/time/datenum.m,
scripts/time/datestr.m, scripts/time/datevec.m, scripts/time/etime.m,
scripts/time/is_leap_year.m, scripts/time/now.m, scripts/time/weekday.m:
Update more docstrings to have one sentence summary as first line.
author | Rik <rik@octave.org> |
---|---|
date | Sun, 03 May 2015 17:00:11 -0700 |
parents | e9f89866074c |
children | df437a52bcaf |
rev | line source |
---|---|
19898
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
19790
diff
changeset
|
1 ## Copyright (C) 2006-2015 Paul Kienzle |
5661 | 2 ## |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7016 | 7 ## the Free Software Foundation; either version 3 of the License, or (at |
8 ## your option) any later version. | |
5661 | 9 ## |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
7016 | 16 ## along with Octave; see the file COPYING. If not, see |
17 ## <http://www.gnu.org/licenses/>. | |
5661 | 18 |
5660 | 19 ## -*- texinfo -*- |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
20 ## @deftypefn {Function File} {@var{days} =} datenum (@var{datevec}) |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
21 ## @deftypefnx {Function File} {@var{days} =} datenum (@var{year}, @var{month}, @var{day}) |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
22 ## @deftypefnx {Function File} {@var{days} =} datenum (@var{year}, @var{month}, @var{day}, @var{hour}) |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
23 ## @deftypefnx {Function File} {@var{days} =} datenum (@var{year}, @var{month}, @var{day}, @var{hour}, @var{minute}) |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
24 ## @deftypefnx {Function File} {@var{days} =} datenum (@var{year}, @var{month}, @var{day}, @var{hour}, @var{minute}, @var{second}) |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
25 ## @deftypefnx {Function File} {@var{days} =} datenum ("datestr") |
19267
14bb81940528
doc: Update docstring for datenum to describe format argument (bug #43181)
Mike Miller <mtmiller@ieee.org>
parents:
17744
diff
changeset
|
26 ## @deftypefnx {Function File} {@var{days} =} datenum ("datestr", @var{f}) |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
27 ## @deftypefnx {Function File} {@var{days} =} datenum ("datestr", @var{p}) |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
28 ## @deftypefnx {Function File} {[@var{days}, @var{secs}] =} datenum (@dots{}) |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
29 ## Return the date/time input as a serial day number, with Jan 1, 0000 |
13856
d490ca8ab1a5
Modernize function implementations and docstrings in scripts/time.
Rik <octave@nomad.inbox5.com>
parents:
13848
diff
changeset
|
30 ## defined as day 1. |
d490ca8ab1a5
Modernize function implementations and docstrings in scripts/time.
Rik <octave@nomad.inbox5.com>
parents:
13848
diff
changeset
|
31 ## |
d490ca8ab1a5
Modernize function implementations and docstrings in scripts/time.
Rik <octave@nomad.inbox5.com>
parents:
13848
diff
changeset
|
32 ## The integer part, @code{floor (@var{days})} counts the number of |
d490ca8ab1a5
Modernize function implementations and docstrings in scripts/time.
Rik <octave@nomad.inbox5.com>
parents:
13848
diff
changeset
|
33 ## complete days in the date input. |
d490ca8ab1a5
Modernize function implementations and docstrings in scripts/time.
Rik <octave@nomad.inbox5.com>
parents:
13848
diff
changeset
|
34 ## |
d490ca8ab1a5
Modernize function implementations and docstrings in scripts/time.
Rik <octave@nomad.inbox5.com>
parents:
13848
diff
changeset
|
35 ## The fractional part, @code{rem (@var{days}, 1)} corresponds to the time |
d490ca8ab1a5
Modernize function implementations and docstrings in scripts/time.
Rik <octave@nomad.inbox5.com>
parents:
13848
diff
changeset
|
36 ## on the given day. |
d490ca8ab1a5
Modernize function implementations and docstrings in scripts/time.
Rik <octave@nomad.inbox5.com>
parents:
13848
diff
changeset
|
37 ## |
19790
446c46af4b42
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19267
diff
changeset
|
38 ## The input may be a date vector (see @code{datevec}), |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
39 ## datestr (see @code{datestr}), or directly specified as input. |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
40 ## |
19267
14bb81940528
doc: Update docstring for datenum to describe format argument (bug #43181)
Mike Miller <mtmiller@ieee.org>
parents:
17744
diff
changeset
|
41 ## When processing input datestrings, @var{f} is the format string used to |
14bb81940528
doc: Update docstring for datenum to describe format argument (bug #43181)
Mike Miller <mtmiller@ieee.org>
parents:
17744
diff
changeset
|
42 ## interpret date strings (see @code{datestr}). If no format @var{f} is |
14bb81940528
doc: Update docstring for datenum to describe format argument (bug #43181)
Mike Miller <mtmiller@ieee.org>
parents:
17744
diff
changeset
|
43 ## specified, then a relatively slow search is performed through various |
14bb81940528
doc: Update docstring for datenum to describe format argument (bug #43181)
Mike Miller <mtmiller@ieee.org>
parents:
17744
diff
changeset
|
44 ## formats. It is always preferable to specify the format string @var{f} if |
14bb81940528
doc: Update docstring for datenum to describe format argument (bug #43181)
Mike Miller <mtmiller@ieee.org>
parents:
17744
diff
changeset
|
45 ## it is known. Formats which do not specify a particular time component |
14bb81940528
doc: Update docstring for datenum to describe format argument (bug #43181)
Mike Miller <mtmiller@ieee.org>
parents:
17744
diff
changeset
|
46 ## will have the value set to zero. Formats which do not specify a date |
14bb81940528
doc: Update docstring for datenum to describe format argument (bug #43181)
Mike Miller <mtmiller@ieee.org>
parents:
17744
diff
changeset
|
47 ## will default to January 1st of the current year. |
14bb81940528
doc: Update docstring for datenum to describe format argument (bug #43181)
Mike Miller <mtmiller@ieee.org>
parents:
17744
diff
changeset
|
48 ## |
14bb81940528
doc: Update docstring for datenum to describe format argument (bug #43181)
Mike Miller <mtmiller@ieee.org>
parents:
17744
diff
changeset
|
49 ## @var{p} is the year at the start of the century to which two-digit years |
14bb81940528
doc: Update docstring for datenum to describe format argument (bug #43181)
Mike Miller <mtmiller@ieee.org>
parents:
17744
diff
changeset
|
50 ## will be referenced. If not specified, it defaults to the current year |
14bb81940528
doc: Update docstring for datenum to describe format argument (bug #43181)
Mike Miller <mtmiller@ieee.org>
parents:
17744
diff
changeset
|
51 ## minus 50. |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
52 ## |
13856
d490ca8ab1a5
Modernize function implementations and docstrings in scripts/time.
Rik <octave@nomad.inbox5.com>
parents:
13848
diff
changeset
|
53 ## The optional output @var{secs} holds the time on the specified day with |
d490ca8ab1a5
Modernize function implementations and docstrings in scripts/time.
Rik <octave@nomad.inbox5.com>
parents:
13848
diff
changeset
|
54 ## greater precision than @var{days}. |
5660 | 55 ## |
5661 | 56 ## Notes: |
57 ## | |
58 ## @itemize | |
59 ## @item | |
5660 | 60 ## Years can be negative and/or fractional. |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10793
diff
changeset
|
61 ## |
5661 | 62 ## @item |
5660 | 63 ## Months below 1 are considered to be January. |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10793
diff
changeset
|
64 ## |
5661 | 65 ## @item |
5660 | 66 ## Days of the month start at 1. |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10793
diff
changeset
|
67 ## |
5661 | 68 ## @item |
5660 | 69 ## Days beyond the end of the month go into subsequent months. |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10793
diff
changeset
|
70 ## |
5661 | 71 ## @item |
5660 | 72 ## Days before the beginning of the month go to the previous month. |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10793
diff
changeset
|
73 ## |
5661 | 74 ## @item |
5660 | 75 ## Days can be fractional. |
5661 | 76 ## @end itemize |
5660 | 77 ## |
20372
2645f9ef8c88
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20072
diff
changeset
|
78 ## @strong{Caution:} this function does not attempt to handle Julian calendars so dates before October 15, 1582 are wrong by as much as eleven days. Also, be aware that only Roman Catholic countries adopted the calendar in 1582. It took until 1924 for it to be adopted everywhere. See the Wikipedia entry on the Gregorian calendar for more details. |
5660 | 79 ## |
20372
2645f9ef8c88
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20072
diff
changeset
|
80 ## @strong{Warning:} leap seconds are ignored. A table of leap seconds is available on the Wikipedia entry for leap seconds. |
13856
d490ca8ab1a5
Modernize function implementations and docstrings in scripts/time.
Rik <octave@nomad.inbox5.com>
parents:
13848
diff
changeset
|
81 ## @seealso{datestr, datevec, now, clock, date} |
5660 | 82 ## @end deftypefn |
83 | |
84 ## Algorithm: Peter Baum (http://vsg.cape.com/~pbaum/date/date0.htm) | |
5687 | 85 ## Author: pkienzle <pkienzle@users.sf.net> |
5660 | 86 |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
87 function [days, secs] = datenum (year, month = [], day = [], hour = 0, minute = 0, second = 0) |
5661 | 88 |
5660 | 89 ## Days until start of month assuming year starts March 1. |
5661 | 90 persistent monthstart = [306; 337; 0; 31; 61; 92; 122; 153; 184; 214; 245; 275]; |
14665
4f458e882516
Allow fractional months to datenum and correct a couple of typos in datetick (bug #36482)
David Bateman <dbateman@free.fr>
parents:
14363
diff
changeset
|
91 persistent monthlength = [31; 28; 31; 30; 31; 30; 31; 31; 30; 31; 30; 31]; |
5660 | 92 |
20072
e9f89866074c
maint: Cleanup some .m files to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents:
20038
diff
changeset
|
93 if (nargin == 0 || nargin > 6 |
e9f89866074c
maint: Cleanup some .m files to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents:
20038
diff
changeset
|
94 || (nargin > 2 && (ischar (year) || iscellstr (year)))) |
6046 | 95 print_usage (); |
5660 | 96 endif |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
97 |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
98 if (ischar (year) || iscellstr (year)) |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
99 [year, month, day, hour, minute, second] = datevec (year, month); |
5660 | 100 else |
5661 | 101 if (nargin == 1) |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
102 nc = columns (year); |
5661 | 103 if (nc > 6 || nc < 3) |
11472
1740012184f9
Use uppercase for variable names in error() strings to match Info documentation. Only m-files done.
Rik <octave@nomad.inbox5.com>
parents:
11469
diff
changeset
|
104 error ("datenum: expected date vector containing [YEAR, MONTH, DAY, HOUR, MINUTE, SECOND]"); |
5660 | 105 endif |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
106 if (nc >= 6) second = year(:,6); endif |
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
107 if (nc >= 5) minute = year(:,5); endif |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
108 if (nc >= 4) hour = year(:,4); endif |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
109 day = year(:,3); |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
110 month = year(:,2); |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
111 year = year(:,1); |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
112 endif |
5660 | 113 endif |
114 | |
20038
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
115 if (! (isa (year, "double") && isa (month, "double") |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
116 && isa (day, "double") && isa (hour, "double") |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
117 && isa (minute, "double") && isa (second, "double"))) |
14737
94a8366f9f89
datenum.m: Ensure all inputs are of class double (Bug #36587).
Rik <octave@nomad.inbox5.com>
parents:
14665
diff
changeset
|
118 error ("datenum: all inputs must be of class double"); |
94a8366f9f89
datenum.m: Ensure all inputs are of class double (Bug #36587).
Rik <octave@nomad.inbox5.com>
parents:
14665
diff
changeset
|
119 endif |
94a8366f9f89
datenum.m: Ensure all inputs are of class double (Bug #36587).
Rik <octave@nomad.inbox5.com>
parents:
14665
diff
changeset
|
120 |
20038
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
121 month(month < 1) = 1; # For compatibility. Otherwise allow negative months. |
5660 | 122 |
14665
4f458e882516
Allow fractional months to datenum and correct a couple of typos in datetick (bug #36482)
David Bateman <dbateman@free.fr>
parents:
14363
diff
changeset
|
123 ## Treat fractional months, by converting the fraction to days |
4f458e882516
Allow fractional months to datenum and correct a couple of typos in datetick (bug #36482)
David Bateman <dbateman@free.fr>
parents:
14363
diff
changeset
|
124 if (floor (month) != month) |
4f458e882516
Allow fractional months to datenum and correct a couple of typos in datetick (bug #36482)
David Bateman <dbateman@free.fr>
parents:
14363
diff
changeset
|
125 fracmonth = month - floor (month); |
4f458e882516
Allow fractional months to datenum and correct a couple of typos in datetick (bug #36482)
David Bateman <dbateman@free.fr>
parents:
14363
diff
changeset
|
126 month = floor (month); |
20072
e9f89866074c
maint: Cleanup some .m files to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents:
20038
diff
changeset
|
127 if ((mod (month-1,12) + 1) == 2 |
e9f89866074c
maint: Cleanup some .m files to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents:
20038
diff
changeset
|
128 && (floor (year/4) - floor (year/100) + floor (year/400)) != 0) |
14665
4f458e882516
Allow fractional months to datenum and correct a couple of typos in datetick (bug #36482)
David Bateman <dbateman@free.fr>
parents:
14363
diff
changeset
|
129 ## leap year |
4f458e882516
Allow fractional months to datenum and correct a couple of typos in datetick (bug #36482)
David Bateman <dbateman@free.fr>
parents:
14363
diff
changeset
|
130 day += fracmonth * 29; |
4f458e882516
Allow fractional months to datenum and correct a couple of typos in datetick (bug #36482)
David Bateman <dbateman@free.fr>
parents:
14363
diff
changeset
|
131 else |
4f458e882516
Allow fractional months to datenum and correct a couple of typos in datetick (bug #36482)
David Bateman <dbateman@free.fr>
parents:
14363
diff
changeset
|
132 day += fracmonth * monthlength ((mod (month-1,12) + 1)); |
4f458e882516
Allow fractional months to datenum and correct a couple of typos in datetick (bug #36482)
David Bateman <dbateman@free.fr>
parents:
14363
diff
changeset
|
133 endif |
4f458e882516
Allow fractional months to datenum and correct a couple of typos in datetick (bug #36482)
David Bateman <dbateman@free.fr>
parents:
14363
diff
changeset
|
134 endif |
4f458e882516
Allow fractional months to datenum and correct a couple of typos in datetick (bug #36482)
David Bateman <dbateman@free.fr>
parents:
14363
diff
changeset
|
135 |
5660 | 136 ## Set start of year to March by moving Jan. and Feb. to previous year. |
137 ## Correct for months > 12 by moving to subsequent years. | |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
138 year += fix ((month-14)/12); |
5660 | 139 |
140 ## Lookup number of days since start of the current year. | |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
141 if (numel (month) == 1 || numel (day) == 1) |
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
142 ## Allow month or day to be scalar while other values may be vectors or |
7782
bfd8d804e6d3
datenum\: fixed combination of scalar and vector/matrix input bug
bill@denney.ws
parents:
7659
diff
changeset
|
143 ## matrices. |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
144 day += monthstart (mod (month-1,12) + 1) + 60; |
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
145 if (numel (month) > 1) |
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
146 day = reshape (day, size (month)); |
7782
bfd8d804e6d3
datenum\: fixed combination of scalar and vector/matrix input bug
bill@denney.ws
parents:
7659
diff
changeset
|
147 endif |
bfd8d804e6d3
datenum\: fixed combination of scalar and vector/matrix input bug
bill@denney.ws
parents:
7659
diff
changeset
|
148 else |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
149 day += reshape (monthstart (mod (month-1,12) + 1), size (day)) + 60; |
7782
bfd8d804e6d3
datenum\: fixed combination of scalar and vector/matrix input bug
bill@denney.ws
parents:
7659
diff
changeset
|
150 endif |
5660 | 151 |
152 ## Add number of days to the start of the current year. Correct | |
153 ## for leap year every 4 years except centuries not divisible by 400. | |
11469
c776f063fefe
Overhaul m-script files to use common variable name between code and documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
154 day += 365*year + floor (year/4) - floor (year/100) + floor (year/400); |
5660 | 155 |
156 ## Add fraction representing current second of the day. | |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
157 days = day + (hour + (minute + second/60)/60)/24; |
5660 | 158 |
159 ## Output seconds if asked so that etime can be more accurate | |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
160 if (isargout (2)) |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
161 secs = day*86400 + hour*3600 + minute*60 + second; |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
162 endif |
5660 | 163 |
164 endfunction | |
165 | |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
166 |
5660 | 167 %!shared part |
168 %! part = 0.514623842592593; | |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
169 %!assert (datenum (2001,5,19), 730990) |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
170 %!assert (datenum ([1417,6,12]), 517712) |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
171 %!assert (datenum ([2001,5,19;1417,6,12]), [730990;517712]) |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
172 %!assert (datenum (2001,5,19,12,21,3.5), 730990+part, eps) |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
173 %!assert (datenum ([1417,6,12,12,21,3.5]), 517712+part, eps) |
7659
4ab2488ab2b4
datenum: allow vector inputs in any orientation
Bill Denny
parents:
7017
diff
changeset
|
174 ## Test vector inputs |
5660 | 175 %!test |
176 %! t = [2001,5,19,12,21,3.5; 1417,6,12,12,21,3.5]; | |
177 %! n = [730990; 517712] + part; | |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
178 %! assert (datenum (t), n, 2*eps); |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
179 %! ## Check that vectors can have either orientation |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
180 %! t = t'; |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
181 %! n = n'; |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
182 %! assert (datenum (t(1,:), t(2,:), t(3,:), t(4,:), t(5,:), t(6,:)), n, 2*eps); |
7782
bfd8d804e6d3
datenum\: fixed combination of scalar and vector/matrix input bug
bill@denney.ws
parents:
7659
diff
changeset
|
183 |
bfd8d804e6d3
datenum\: fixed combination of scalar and vector/matrix input bug
bill@denney.ws
parents:
7659
diff
changeset
|
184 ## Test mixed vectors and scalars |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
185 %!assert (datenum ([2008;2009],1,1), [datenum(2008,1,1);datenum(2009,1,1)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
186 %!assert (datenum (2008, [1;2], 1), [datenum(2008,1,1);datenum(2008,2,1)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
187 %!assert (datenum (2008, 1, [1;2]), [datenum(2008,1,1);datenum(2008,1,2)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
188 %!assert (datenum ([2008;2009], [1;2], 1), [datenum(2008,1,1);datenum(2009,2,1)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
189 %!assert (datenum ([2008;2009], 1, [1;2]), [datenum(2008,1,1);datenum(2009,1,2)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
190 %!assert (datenum (2008, [1;2], [1;2]), [datenum(2008,1,1);datenum(2008,2,2)]) |
7782
bfd8d804e6d3
datenum\: fixed combination of scalar and vector/matrix input bug
bill@denney.ws
parents:
7659
diff
changeset
|
191 ## And the other orientation |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
192 %!assert (datenum ([2008 2009], 1, 1), [datenum(2008,1,1) datenum(2009,1,1)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
193 %!assert (datenum (2008, [1 2], 1), [datenum(2008,1,1) datenum(2008,2,1)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
194 %!assert (datenum (2008, 1, [1 2]), [datenum(2008,1,1) datenum(2008,1,2)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
195 %!assert (datenum ([2008 2009], [1 2], 1), [datenum(2008,1,1) datenum(2009,2,1)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
196 %!assert (datenum ([2008 2009], 1, [1 2]), [datenum(2008,1,1) datenum(2009,1,2)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
197 %!assert (datenum (2008, [1 2], [1 2]), [datenum(2008,1,1) datenum(2008,2,2)]) |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
198 ## Test string and cellstr inputs |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
199 %!assert (datenum ("5/19/2001"), 730990) |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
200 %!assert (datenum ({"5/19/2001"}), 730990) |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
201 %!assert (datenum (char ("5/19/2001", "6/6/1944")), [730990; 710189]) |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
202 %!assert (datenum ({"5/19/2001", "6/6/1944"}), [730990; 710189]) |
19267
14bb81940528
doc: Update docstring for datenum to describe format argument (bug #43181)
Mike Miller <mtmiller@ieee.org>
parents:
17744
diff
changeset
|
203 ## Test string input with format string |
14bb81940528
doc: Update docstring for datenum to describe format argument (bug #43181)
Mike Miller <mtmiller@ieee.org>
parents:
17744
diff
changeset
|
204 %!assert (datenum ("5-19, 2001", "mm-dd, yyyy"), 730990) |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
205 |
20038
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
206 ## Test input validation |
13848
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
207 %!error datenum () |
40e32fe44aaa
Ugrade time functions to accept millisecond format string FFF (Bug #34586)
Rik <octave@nomad.inbox5.com>
parents:
12973
diff
changeset
|
208 %!error datenum (1,2,3,4,5,6,7) |
14737
94a8366f9f89
datenum.m: Ensure all inputs are of class double (Bug #36587).
Rik <octave@nomad.inbox5.com>
parents:
14665
diff
changeset
|
209 %!error <expected date vector containing> datenum ([1, 2]) |
94a8366f9f89
datenum.m: Ensure all inputs are of class double (Bug #36587).
Rik <octave@nomad.inbox5.com>
parents:
14665
diff
changeset
|
210 %!error <expected date vector containing> datenum ([1,2,3,4,5,6,7]) |
94a8366f9f89
datenum.m: Ensure all inputs are of class double (Bug #36587).
Rik <octave@nomad.inbox5.com>
parents:
14665
diff
changeset
|
211 %!error <all inputs must be of class double> datenum (int32 (2000), int32 (1), int32 (1)) |
17338
1c89599167a6
maint: End m-files with 1 blank line.
Rik <rik@octave.org>
parents:
14748
diff
changeset
|
212 |