annotate src/time.cc @ 2554:f7e3d23f0a8f

[project @ 1996-11-21 01:41:57 by jwe]
author jwe
date Thu, 21 Nov 1996 01:43:06 +0000
parents 7ee42ff6536a
children 76411ce43c05
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
1 /*
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
2
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
3 Copyright (C) 1996 John W. Eaton
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
4
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
6
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
10 later version.
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
11
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
15 for more details.
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
16
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
20
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
21 */
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
22
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
23 #ifdef HAVE_CONFIG_H
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
24 #include <config.h>
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
25 #endif
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
26
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
27 #include <string>
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
28
2457
5be3f6f5986a [project @ 1996-11-03 02:54:44 by jwe]
jwe
parents: 2456
diff changeset
29 #include "defun-dld.h"
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
30 #include "error.h"
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
31 #include "help.h"
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
32 #include "oct-map.h"
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
33 #include "systime.h"
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
34 #include "ov.h"
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
35 #include "oct-obj.h"
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
36 #include "utils.h"
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
37
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
38 // Date and time functions.
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
39
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
40 static Octave_map
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
41 mk_tm_map (struct tm *tm, double fraction)
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
42 {
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
43 Octave_map m;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
44
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
45 m ["usec"] = fraction * 1e6;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
46 m ["sec"] = (double) tm->tm_sec;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
47 m ["min"] = (double) tm->tm_min;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
48 m ["hour"] = (double) tm->tm_hour;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
49 m ["mday"] = (double) tm->tm_mday;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
50 m ["mon"] = (double) tm->tm_mon;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
51 m ["year"] = (double) tm->tm_year;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
52 m ["wday"] = (double) tm->tm_wday;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
53 m ["yday"] = (double) tm->tm_yday;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
54 m ["isdst"] = (double) tm->tm_isdst;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
55 #if defined (HAVE_TM_ZONE)
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
56 m ["zone"] = tm->tm_zone;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
57 #elif defined (HAVE_TZNAME)
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
58 if (tm->tm_isdst && tzname[1] && *tzname[1])
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
59 m ["zone"] = tzname[1];
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
60 else
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
61 m ["zone"] = tzname[0];
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
62 #else
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
63 m ["zone"] = zone_name (tm);
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
64 #endif
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
65
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
66 return m;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
67 }
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
68
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
69 static struct tm*
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
70 extract_tm (Octave_map &m, double& fraction)
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
71 {
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
72 static struct tm tm;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
73
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
74 fraction = (m ["usec"] . double_value ()) / 1e6;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
75 tm.tm_sec = NINT (m ["sec"] . double_value ());
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
76 tm.tm_min = NINT (m ["min"] . double_value ());
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
77 tm.tm_hour = NINT (m ["hour"] . double_value ());
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
78 tm.tm_mday = NINT (m ["mday"] . double_value ());
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
79 tm.tm_mon = NINT (m ["mon"] . double_value ());
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
80 tm.tm_year = NINT (m ["year"] . double_value ());
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
81 tm.tm_wday = NINT (m ["wday"] . double_value ());
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
82 tm.tm_yday = NINT (m ["yday"] . double_value ());
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
83 tm.tm_isdst = NINT (m ["isdst"] . double_value ());
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
84 #ifdef HAVE_TMZONE
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
85 string tstr = m ["zone"] . string_value ();
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
86 tm.tm_zone = tstr.c_str ();
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
87 #endif
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
88
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
89 return &tm;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
90 }
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
91
2465
7ee42ff6536a [project @ 1996-11-03 08:54:14 by jwe]
jwe
parents: 2461
diff changeset
92 DEFUN_DLD (time, , ,
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
93 "time ()\n\
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
94 \n\
2459
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
95 Return current time. On Unix systems, this is the number of\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
96 seconds since the epoch.")
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
97 {
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
98 time_t now;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
99 double fraction = 0.0;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
100
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
101 #ifdef HAVE_GETTIMEOFDAY
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
102
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
103 struct timeval tp;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
104
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
105 #ifdef GETTIMEOFDAY_NO_TZ
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
106 gettimeofday (&tp);
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
107 #else
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
108 gettimeofday (&tp, 0);
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
109 #endif
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
110
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
111 now = tp.tv_sec;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
112
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
113 fraction = tp.tv_usec / 1e6;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
114
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
115 #else
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
116
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
117 now = time (0);
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
118
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
119 #endif
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
120
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
121 return (double) now + fraction;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
122 }
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
123
2465
7ee42ff6536a [project @ 1996-11-03 08:54:14 by jwe]
jwe
parents: 2461
diff changeset
124 DEFUN_DLD (gmtime, args, ,
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
125 "gmtime (TIME)\n\
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
126 \n\
2459
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
127 Given a value returned from time(), return a structure like that\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
128 returned from localtime() but with values corresponding to\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
129 Coordinated Universal Time (UTC).")
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
130 {
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
131 octave_value_list retval;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
132
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
133 if (args.length () == 1)
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
134 {
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
135 double tmp = args(0).double_value ();
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
136
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
137 if (! error_state)
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
138 {
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
139 time_t timeval = NINT (tmp);
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
140 double ip;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
141 double fraction = modf (tmp, &ip);
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
142
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
143 retval = octave_value (mk_tm_map (gmtime (&timeval), fraction));
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
144 }
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
145 }
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
146 else
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
147 print_usage ("gmtime");
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
148
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
149 return retval;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
150 }
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
151
2465
7ee42ff6536a [project @ 1996-11-03 08:54:14 by jwe]
jwe
parents: 2461
diff changeset
152 DEFUN_DLD (localtime, args, ,
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
153 "localtime (TIME)\n\
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
154 \n\
2459
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
155 Given a value returned from time(), return a structure with\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
156 the following elements:\n\
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
157 \n\
2459
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
158 usec : microseconds after the second (0, 999999)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
159 sec : seconds after the minute (0, 61)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
160 min : minutes after the hour (0, 59)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
161 hour : hours since midnight (0, 23)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
162 mday : day of the month (1, 31)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
163 mon : months since January (0, 11)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
164 year : years since 1900\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
165 wday : days since Sunday (0, 6)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
166 yday : days since January 1 (0, 365)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
167 isdst : Daylight Savings Time flag\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
168 zone : Time zone")
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
169 {
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
170 octave_value_list retval;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
171
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
172 if (args.length () == 1)
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
173 {
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
174 double tmp = args(0).double_value ();
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
175
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
176 if (! error_state)
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
177 {
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
178 time_t timeval = NINT (tmp);
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
179 double ip;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
180 double fraction = modf (tmp, &ip);
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
181
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
182 retval = octave_value (mk_tm_map (localtime (&timeval), fraction));
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
183 }
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
184 }
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
185 else
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
186 print_usage ("localtime");
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
187
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
188 return retval;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
189 }
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
190
2465
7ee42ff6536a [project @ 1996-11-03 08:54:14 by jwe]
jwe
parents: 2461
diff changeset
191 DEFUN_DLD (mktime, args, ,
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
192 "mktime (TMSTRUCT)")
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
193 {
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
194 octave_value_list retval;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
195
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
196 if (args.length () == 1 && args(0).is_map ())
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
197 {
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
198 Octave_map map = args(0).map_value ();
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
199
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
200 double fraction;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
201
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
202 struct tm *tm = extract_tm (map, fraction);
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
203
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
204 if (! error_state)
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
205 retval = (double) mktime (tm) + fraction;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
206 }
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
207 else
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
208 print_usage ("mktime");
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
209
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
210 return retval;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
211 }
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
212
2465
7ee42ff6536a [project @ 1996-11-03 08:54:14 by jwe]
jwe
parents: 2461
diff changeset
213 DEFUN_DLD (strftime, args, ,
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
214 "strftime (FMT, TMSTRUCT)\n\
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
215 \n\
2459
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
216 Performs `%' substitutions similar to those in printf. Except where\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
217 noted, substituted fields have a fixed size; numeric fields are\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
218 padded if necessary. Padding is with zeros by default; for fields\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
219 that display a single number, padding can be changed or inhibited by\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
220 following the `%' with one of the modifiers described below.\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
221 Unknown field specifiers are copied as normal characters. All other\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
222 characters are copied to the output without change.\n\
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
223 \n\
2459
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
224 Supports a superset of the ANSI C field specifiers.\n\
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
225 \n\
2459
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
226 Literal character fields:\n\
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
227 \n\
2459
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
228 % %\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
229 n newline\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
230 t tab\n\
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
231 \n\
2459
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
232 Numeric modifiers (a nonstandard extension):\n\
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
233 \n\
2459
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
234 - do not pad the field\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
235 _ pad the field with spaces\n\
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
236 \n\
2459
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
237 Time fields:\n\
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
238 \n\
2459
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
239 %H hour (00..23)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
240 %I hour (01..12)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
241 %k hour ( 0..23)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
242 %l hour ( 1..12)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
243 %M minute (00..59)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
244 %p locale's AM or PM\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
245 %r time, 12-hour (hh:mm:ss [AP]M)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
246 %R time, 24-hour (hh:mm)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
247 %s time in seconds since 00:00:00, Jan 1, 1970 (a nonstandard extension)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
248 %S second (00..61)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
249 %T time, 24-hour (hh:mm:ss)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
250 %X locale's time representation (%H:%M:%S)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
251 %Z time zone (EDT), or nothing if no time zone is determinable\n\
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
252 \n\
2459
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
253 Date fields:\n\
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
254 \n\
2459
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
255 %a locale's abbreviated weekday name (Sun..Sat)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
256 %A locale's full weekday name, variable length (Sunday..Saturday)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
257 %b locale's abbreviated month name (Jan..Dec)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
258 %B locale's full month name, variable length (January..December)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
259 %c locale's date and time (Sat Nov 04 12:02:33 EST 1989)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
260 %C century (00..99)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
261 %d day of month (01..31)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
262 %e day of month ( 1..31)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
263 %D date (mm/dd/yy)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
264 %h same as %b\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
265 %j day of year (001..366)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
266 %m month (01..12)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
267 %U week number of year with Sunday as first day of week (00..53)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
268 %w day of week (0..6)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
269 %W week number of year with Monday as first day of week (00..53)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
270 %x locale's date representation (mm/dd/yy)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
271 %y last two digits of year (00..99)\n\
0a2cd53db5f9 [project @ 1996-11-03 03:36:01 by jwe]
jwe
parents: 2457
diff changeset
272 %Y year (1970...)")
2456
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
273 {
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
274 octave_value_list retval;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
275
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
276 if (args.length () == 2 && args(0).is_string () && args(1).is_map ())
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
277 {
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
278 string fmt = args(0).string_value ();
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
279
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
280 Octave_map map = args(1).map_value ();
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
281
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
282 double fraction;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
283
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
284 struct tm *tm = extract_tm (map, fraction);
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
285
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
286 if (! error_state)
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
287 {
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
288 int bufsize = 128;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
289 char *buf = new char [bufsize];
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
290
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
291 while (! strftime (buf, bufsize, fmt.c_str (), tm))
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
292 {
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
293 delete [] buf;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
294 bufsize *= 2;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
295 buf = new char [bufsize];
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
296 }
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
297
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
298 retval = buf;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
299
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
300 delete [] buf;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
301 }
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
302 }
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
303 else
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
304 print_usage ("strftime");
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
305
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
306 return retval;
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
307 }
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
308
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
309 /*
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
310 ;;; Local Variables: ***
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
311 ;;; mode: C++ ***
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
312 ;;; End: ***
fd838110e6ca [project @ 1996-11-03 02:47:15 by jwe]
jwe
parents:
diff changeset
313 */