% -*- texinfo -*- % @deftypefn {Function File} {Y =} datesplit(date, P) % @deftypefnx {Function File} {[Y,M,D,h,m,s] =} datesplit(date, P) % Split a date string into the Year, Month, Day, hour, minute, and % second. This routine tries to be as forgiving as possible to the % date input while requiring that the date is not ambiguous. % % Anywhere possible where it would not be ambiguous, efforts were made % to make times possible with seconds and AM/PM as optional. Also, % along the same lines, where possible, commas were allowed with % spaces, and the year/month/day separators were allowed as period (.), % slash (/), and dash (-). Not all format possibilities are shown in % the following table, but a date like @code{dd-mmm-yyyy HH:MM:SS} is % parsed just as well as @code{d/mmm.yyyy, ,H:MM, AM}. % % Supported @code{date} formats include (the same as datestr): % @multitable @columnfractions 0.1 0.45 0.45 % @item @strong{Code} @tab @strong{Format} @tab @strong{Example} % @item 0 @tab dd-mmm-yyyy HH:MM:SS @tab 07-Sep-2000 15:38:09 % @item 1 @tab dd-mmm-yyyy @tab 07-Sep-2000 % @item 2 @tab mm/dd/yy @tab 09/07/00 % @item 3 @tab mmm @tab Sep % @item 6 @tab mm/dd @tab 09/13 % @item 10 @tab yyyy @tab 2000 % @item 12 @tab mmmyy @tab Sep00 % @item 13 @tab HH:MM:SS @tab 15:38:09 % @item 14 @tab HH:MM:SS PM @tab 03:38:09 PM % @item 15 @tab HH:MM @tab 15:38 % @item 16 @tab HH:MM PM @tab 03:38 PM % @item 17 @tab QQ-YY @tab Q3-00 % @item 19 @tab dd/mm @tab 13/03 % @item 20 @tab dd/mm/yy @tab 13/03/95 % @item 21 @tab mmm.dd.yyyy HH:MM:SS @tab Mar.03.1962 13:53:06 % @item 22 @tab mmm.dd.yyyy @tab Mar.03.1962 % @item 23 @tab mm/dd/yyyy @tab 03/13/1962 % @item 24 @tab dd/mm/yyyy @tab 12/03/1962 % @item 25 @tab yy/mm/dd @tab 95/03/13 % @item 26 @tab yyyy/mm/dd @tab 1995/03/13 % @item 27 @tab QQ-YYYY @tab Q4-2132 % @item 28 @tab mmmyyyy @tab Mar2047 % @item 29 @tab yyyymmdd @tab 20470313 % @item 30 @tab yyyymmddTHHMMSS @tab 20470313T132603 % @item 31 @tab yyyy-mm-dd HH:MM:SS @tab 1047-03-13 13:26:03 % @end multitable % % The parameter @code{P} is needed to convert date strings with 2 digit % years into dates with 4 digit years. 2 digit years are assumed to be % between @code{P} and @code{P+99}. If @code{P} is not given then the % current year - 50 is used, so that dates are centered on the present. % For birthdates, you would want @code{P} to be current year - 99. For % appointments, you would want @code{P} to be current year. % % This function makes no strong attempt to verify the accuracy of the % numbers that it returns in that it doesn't (currently) check to see % that you're not trying to use the date Feb 30. When applicable, it % tries to make your input work, though. It will try to determine if % you're using the date "03/13/95" that the date is "March 13, 1995", % but if there is doubt, datesplit will return an error instead of % trying to guess the wrong value. % % @seealso{date,clock,now,datestr,datenum,calendar,weekday} % @end deftypefn