|
|
| version 1.46, 2003/07/24 11:31:19 | version 1.51, 2003/11/03 11:10:39 |
|---|---|
| Line 71 static int NN_year_to_NNNN(int year) { | Line 71 static int NN_year_to_NNNN(int year) { |
| // 2002-04-25 18:14:00 | // 2002-04-25 18:14:00 |
| // 18:14:00 | // 18:14:00 |
| // 2002:04:25 [+maybe time] | // 2002:04:25 [+maybe time] |
| time_t cstr_to_time_t(char *cstr, bool fail_on_error) { // used in image.C | /*not static, used in image.C*/ time_t cstr_to_time_t(char *cstr, bool fail_on_error) { |
| if( !cstr || !*cstr ) { | |
| if(fail_on_error) | |
| throw Exception(0, | |
| 0, | |
| "empty string is not valid datetime"); | |
| return 0; | |
| } | |
| char *cur=cstr; | char *cur=cstr; |
| int date_delim=isdigit(cur[0])&&isdigit(cur[1])&&isdigit(cur[2])&&isdigit(cur[3])&&cur[4]==':'?':' | int date_delim=isdigit(cur[0])&&isdigit(cur[1])&&isdigit(cur[2])&&isdigit(cur[3])&&cur[4]==':'?':' |
| :'-'; | :'-'; |
| Line 161 static void _sql_string(Request& r, Meth | Line 168 static void _sql_string(Request& r, Meth |
| r.write_assign_lang(String(buf, size)); | r.write_assign_lang(String(buf, size)); |
| } | } |
| static void _roll(Request& r, MethodParams& params) { | static void _roll(Request& r, MethodParams& params) { |
| VDate& vdate=GET_SELF(r, VDate); | VDate& vdate=GET_SELF(r, VDate); |
| Line 173 static void _roll(Request& r, MethodPara | Line 179 static void _roll(Request& r, MethodPara |
| if(what=="year") offset=&oyear; | if(what=="year") offset=&oyear; |
| else if(what=="month") offset=&omonth; | else if(what=="month") offset=&omonth; |
| else if(what=="day") offset=&oday; | else if(what=="day") offset=&oday; |
| else | else if(what=="TZ") { |
| const String& argument_tz=params.as_string(1, "'TZ' must be string"); | |
| vdate.set_tz(&argument_tz); | |
| return; | |
| } else | |
| throw Exception("parser.runtime", | throw Exception("parser.runtime", |
| &what, | &what, |
| "must be year|month|day"); | "must be year|month|day|TZ"); |
| *offset=params.as_int(1, "offset must be int", r); | *offset=params.as_int(1, "offset must be int", r); |
| Line 368 static void _calendar(Request& r, Method | Line 378 static void _calendar(Request& r, Method |
| r.write_no_lang(*new VTable(table)); | r.write_no_lang(*new VTable(table)); |
| } | } |
| static void _unix_timestamp(Request& r, MethodParams& params) { | |
| VDate& vdate=GET_SELF(r, VDate); | |
| if(params.count()==0) { | |
| // ^date.unix-timestamp[] | |
| r.write_no_lang(*new VInt((int)vdate.get_time())); | |
| } else { | |
| if(vdate.get_time()) | |
| throw Exception(0, | |
| 0, | |
| "date object already constructed"); | |
| // ^unix-timestamp(time_t) | |
| time_t t=(time_t)params.as_int(0, "Unix timestamp must be integer", r); | |
| vdate.set_time(t); | |
| } | |
| } | |
| // constructor | // constructor |
| MDate::MDate(): Methoded("date") { | MDate::MDate(): Methoded("date") { |
| Line 389 MDate::MDate(): Methoded("date") { | Line 419 MDate::MDate(): Methoded("date") { |
| // ^date:calendar[week|weekeng;year;month;day] = table | // ^date:calendar[week|weekeng;year;month;day] = table |
| add_native_method("calendar", Method::CT_STATIC, _calendar, 3, 4); | add_native_method("calendar", Method::CT_STATIC, _calendar, 3, 4); |
| // ^unix-timestamp[] | |
| add_native_method("unix-timestamp", Method::CT_DYNAMIC, _unix_timestamp, 0, 1); | |
| } | } |