71 Set(year, month, day, hour, min, sec);
88 static TString weekDays[7] = {
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
"Sun" };
91 for (day = 0; day < 7; day++) {
92 if (wd(0, 3) == weekDays[day])
95 return (day < 7) ? day+1: -1;
105 char *retStr = ctime(&t);
110 static const char *defaulttime =
"15/06/96";
111 Error(
"TDatime::AsString",
"could not get time string");
125 #if defined(R__SOLARIS) && (_POSIX_C_SOURCE - 0 < 199506L)
126 char *retStr = ctime_r(&t, out, 26);
128 char *retStr = ctime_r(&t, out);
131 char *retStr = ctime(&t);
140 static const char *defaulttime =
"15/06/96";
141 strcpy(out, defaulttime);
142 Error(
"TDatime::AsString",
"could not get time string");
154 static char sqldate[20];
157 UInt_t month = (fDatime<<6)>>28;
158 UInt_t day = (fDatime<<10)>>27;
159 UInt_t hour = (fDatime<<15)>>27;
160 UInt_t min = (fDatime<<20)>>26;
161 UInt_t sec = (fDatime<<26)>>26;
163 snprintf(sqldate,20,
"%04d-%02d-%02d %02d:%02d:%02d", (year+1995), month, day,
185 UInt_t month = (fDatime<<6)>>28;
186 UInt_t day = (fDatime<<10)>>27;
187 UInt_t hour = (fDatime<<15)>>27;
188 UInt_t min = (fDatime<<20)>>26;
189 UInt_t sec = (fDatime<<26)>>26;
192 tp.tm_year = year+95;
200 time_t t = mktime(&tp);
202 Error(
"TDatime::Convert",
"error converting fDatime to time_t");
208 struct tm *tgp = gmtime_r(&t, &tg);
210 struct tm *tgp = gmtime(&t);
251 UInt_t month = (fDatime<<6)>>28;
252 UInt_t day = (fDatime<<10)>>27;
253 return 10000*(year+1995) + 100*month + day;
261 UInt_t hour = (fDatime<<15)>>27;
262 UInt_t min = (fDatime<<20)>>26;
263 UInt_t sec = (fDatime<<26)>>26;
264 return 10000*hour + 100*min + sec;
272 printf(
"Date/Time = %s\n",
AsString());
292 time_t tloc = time(0);
295 struct tm *tp = localtime_r(&tloc, &tpa);
297 struct tm *tp = localtime(&tloc);
299 UInt_t year = tp->tm_year;
300 UInt_t month = tp->tm_mon + 1;
302 UInt_t hour = tp->tm_hour;
308 UInt_t year = tp.wYear-1900;
316 fDatime = (year-95)<<26 | month<<22 | day<<17 | hour<<12 | min<<6 | sec;
327 UInt_t year, month, day, hour, min, sec;
330 year = ((tloc >> 25) & 0x7f) + 80;
331 month = ((tloc >> 21) & 0xf);
332 day = (tloc >> 16) & 0x1f;
333 hour = (tloc >> 11) & 0x1f;
334 min = (tloc >> 5) & 0x3f;
335 sec = (tloc & 0x1f) * 2;
337 time_t t = (time_t) tloc;
340 struct tm *tp = localtime_r(&t, &tpa);
342 struct tm *tp = localtime(&t);
345 month = tp->tm_mon + 1;
352 fDatime = (year-95)<<26 | month<<22 | day<<17 | hour<<12 | min<<6 | sec;
365 if (date > 19000000) date -= 19000000;
367 Error(
"TDatime::Set",
"year smaller than 1995");
371 Int_t year = date/10000;
372 Int_t month = (date-year*10000)/100;
373 Int_t day = date%100;
375 Int_t hour, min, sec;
378 min = (time-hour*10000)/100;
381 fDatime = (year-95)<<26 | month<<22 | day<<17 | hour<<12 | min<<6 | sec;
391 if (year < 159) year += 1900;
393 Error(
"TDatime::Set",
"year must be >= 1995");
397 fDatime = (year-1995)<<26 | month<<22 | day<<17 | hour<<12 | min<<6 | sec;
408 if (sscanf(sqlDateTime,
"%d-%d-%d %d:%d:%d", &yy, &
mm, &dd, &hh, &mi, &ss) == 6)
409 Set(yy,
mm, dd, hh, mi, ss);
411 Error(
"TDatime(sqlDatTime)",
"input string not in right format, set"
412 " to current date/time");
437 UInt_t year = datetime>>26;
438 UInt_t month = (datetime<<6)>>28;
439 UInt_t day = (datetime<<10)>>27;
440 UInt_t hour = (datetime<<15)>>27;
441 UInt_t min = (datetime<<20)>>26;
442 UInt_t sec = (datetime<<26)>>26;
443 date = 10000*(year+1995) + 100*month + day;
444 time = 10000*hour + 100*min + sec;
456 Int_t dy = date / 10000;
457 Int_t dm = (date - dy*10000)/100;
458 Int_t dd = (date - dy*10000 - dm*100);
462 return y*365 +
y/4 -
y/100 +
y/400 + (
m*306 + 5)/10 + (dd - 1);
473 Int_t y =
int((10000*ld + 14780)/3652425);
474 Int_t ddd = day - (
y*365 +
y/4 -
y/100 +
y/400);
477 ddd = day - (
y*365 +
y/4 -
y/100 +
y/400);
479 Int_t mi = (52 + 100*ddd)/3060;
480 Int_t dy =
y + (mi + 2)/12;
481 Int_t dm = (mi + 2)%12 + 1;
482 Int_t dd = ddd - (mi*306 + 5)/10 + 1;
484 return dy*10000 + dm*100 + dd;
498 static Int_t calstart = 0;
503 ::Warning(
"TDatime::GetLegalGlobalDayFromDate",
"dates before Oct. 1582 are inaccurate.");
506 ::Error(
"TDatime::GetLegalGlobalDayFromDate",
"illegal date %d", dte);
515 std::string cling::printValue(
const TDatime* val) {
517 return std::string(val->
AsString(buf));