70   Set(year, month, day, hour, min, sec);
 
   87   static TString weekDays[7] = { 
"Mon", 
"Tue", 
"Wed", 
"Thu", 
"Fri", 
"Sat", 
"Sun" };
 
   90   for (day = 0; day < 7; day++) {
 
   91      if (wd(0, 3) == weekDays[day])
 
   94   return (day < 7) ? day+1: -1;
 
  104   char *retStr = ctime(&t);
 
  109      static const char *defaulttime = 
"15/06/96";
 
  110      Error(
"TDatime::AsString", 
"could not get time string");
 
  124#if defined(R__SOLARIS) && (_POSIX_C_SOURCE - 0 < 199506L) 
  125   char *retStr = ctime_r(&t, out, 26);
 
  127   char *retStr = ctime_r(&t, out);
 
  130   char *retStr = ctime(&t);
 
  139      static const char *defaulttime = 
"15/06/96";
 
  140      strcpy(out, defaulttime);
 
  141      Error(
"TDatime::AsString", 
"could not get time string");
 
  153   static char sqldate[20];
 
  156   UInt_t month = (fDatime<<6)>>28;
 
  157   UInt_t day   = (fDatime<<10)>>27;
 
  158   UInt_t hour  = (fDatime<<15)>>27;
 
  159   UInt_t min   = (fDatime<<20)>>26;
 
  160   UInt_t sec   = (fDatime<<26)>>26;
 
  162   snprintf(sqldate,20, 
"%04d-%02d-%02d %02d:%02d:%02d", (year+1995), month, day,
 
  184   UInt_t month = (fDatime<<6)>>28;
 
  185   UInt_t day   = (fDatime<<10)>>27;
 
  186   UInt_t hour  = (fDatime<<15)>>27;
 
  187   UInt_t min   = (fDatime<<20)>>26;
 
  188   UInt_t sec   = (fDatime<<26)>>26;
 
  191   tp.tm_year  = year+95;
 
  199   time_t t = mktime(&tp);
 
  201      Error(
"TDatime::Convert", 
"error converting fDatime to time_t");
 
  207      struct tm *tgp = gmtime_r(&t, &tg);
 
  209      struct tm *tgp = gmtime(&t);
 
  250   UInt_t month = (fDatime<<6)>>28;
 
  251   UInt_t day   = (fDatime<<10)>>27;
 
  252   return 10000*(year+1995) + 100*month + day;
 
  260   UInt_t hour  = (fDatime<<15)>>27;
 
  261   UInt_t min   = (fDatime<<20)>>26;
 
  262   UInt_t sec   = (fDatime<<26)>>26;
 
  263   return 10000*hour + 100*min + sec;
 
  271   printf(
"Date/Time = %s\n", 
AsString());
 
  291   time_t tloc   = time(0);
 
  294   struct tm *tp = localtime_r(&tloc, &tpa);
 
  296   struct tm *tp = localtime(&tloc);
 
  298   UInt_t year   = tp->tm_year;
 
  299   UInt_t month  = tp->tm_mon + 1;
 
  301   UInt_t hour   = tp->tm_hour;
 
  307   UInt_t year   = tp.wYear-1900;
 
  315   fDatime = (year-95)<<26 | month<<22 | day<<17 | hour<<12 | min<<6 | sec;
 
  326   UInt_t year, month, day, hour, min, sec;
 
  329      year  = ((tloc >> 25) & 0x7f) + 80;
 
  330      month = ((tloc >> 21) & 0xf);
 
  331      day   = (tloc >> 16) & 0x1f;
 
  332      hour  = (tloc >> 11) & 0x1f;
 
  333      min   = (tloc >> 5) & 0x3f;
 
  334      sec   = (tloc & 0x1f) * 2;
 
  336      time_t t = (time_t) tloc;
 
  339      struct tm *tp = localtime_r(&t, &tpa);
 
  341      struct tm *tp = localtime(&t);
 
  344      month  = tp->tm_mon + 1;
 
  351   fDatime = (year-95)<<26 | month<<22 | day<<17 | hour<<12 | min<<6 | sec;
 
  364   if (date > 19000000) date -= 19000000;
 
  366      Error(
"TDatime::Set", 
"year smaller than 1995");
 
  370   Int_t year  = date/10000;
 
  371   Int_t month = (date-year*10000)/100;
 
  372   Int_t day   = date%100;
 
  374   Int_t hour, min, sec;
 
  377   min  = (time-hour*10000)/100;
 
  380   fDatime = (year-95)<<26 | month<<22 | day<<17 | hour<<12 | min<<6 | sec;
 
  390   if (year < 159) year += 1900;
 
  392      Error(
"TDatime::Set", 
"year must be >= 1995");
 
  396   fDatime = (year-1995)<<26 | month<<22 | day<<17 | hour<<12 | min<<6 | sec;
 
  407   if (sscanf(sqlDateTime, 
"%d-%d-%d %d:%d:%d", &yy, &
mm, &dd, &hh, &mi, &ss) == 6)
 
  408      Set(yy, 
mm, dd, hh, mi, ss);
 
  410      Error(
"TDatime(sqlDatTime)", 
"input string not in right format, set" 
  411            " to current date/time");
 
  436   UInt_t year  = datetime>>26;
 
  437   UInt_t month = (datetime<<6)>>28;
 
  438   UInt_t day   = (datetime<<10)>>27;
 
  439   UInt_t hour  = (datetime<<15)>>27;
 
  440   UInt_t min   = (datetime<<20)>>26;
 
  441   UInt_t sec   = (datetime<<26)>>26;
 
  442   date         =  10000*(year+1995) + 100*month + day;
 
  443   time         =  10000*hour + 100*min + sec;
 
  455   Int_t dy = date / 10000;
 
  456   Int_t dm = (date - dy*10000)/100;
 
  457   Int_t dd = (date - dy*10000 - dm*100);
 
  461   return y*365 + 
y/4 - 
y/100 + 
y/400 + (
m*306 + 5)/10 + (dd - 1);
 
  472   Int_t y = int((10000*ld + 14780)/3652425);
 
  473   Int_t ddd = day - (
y*365 + 
y/4 - 
y/100 + 
y/400);
 
  476      ddd = day - (
y*365 + 
y/4 - 
y/100 + 
y/400);
 
  478   Int_t mi = (52 + 100*ddd)/3060;
 
  479   Int_t dy = 
y + (mi + 2)/12;
 
  480   Int_t dm = (mi + 2)%12 + 1;
 
  481   Int_t dd = ddd - (mi*306 + 5)/10 + 1;
 
  483   return dy*10000 + dm*100 + dd;
 
  497   static Int_t calstart = 0;
 
  502      ::Warning(
"TDatime::GetLegalGlobalDayFromDate", 
"dates before Oct. 1582 are inaccurate.");
 
  505      ::Error(
"TDatime::GetLegalGlobalDayFromDate", 
"illegal date %d", dte);
 
  514std::string cling::printValue(
const TDatime* val) {
 
  516   return std::string(val->
AsString(buf));
 
void frombuf(char *&buf, Bool_t *x)
 
void tobuf(char *&buf, Bool_t x)
 
void Error(const char *location, const char *msgfmt,...)
 
void Warning(const char *location, const char *msgfmt,...)
 
Buffer base class used for serializing objects.
 
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
 
static Int_t GetGlobalDayFromDate(Int_t date)
Static function that returns the global day number from date.
 
static Int_t GetDateFromGlobalDay(Int_t day)
Static function that returns the date from the global day number.
 
void Copy(TDatime &datime) const
Copy this to datime.
 
static Int_t GetLegalGlobalDayFromDate(Int_t date)
Static function that returns the global day number from date.
 
Int_t GetDate() const
Return date in form of 19971224 (i.e. 24/12/1997)
 
UInt_t Get() const
Return raw date/time as encoded by TDatime.
 
void FillBuffer(char *&buffer)
Encode Date/Time into buffer, used by I/O system.
 
Int_t GetDayOfWeek() const
Returns day of week, with Monday being day 1 and Sunday day 7.
 
void Print(Option_t *option="") const
Print date and time.
 
const char * AsSQLString() const
Return the date & time in SQL compatible string format, like: 1997-01-15 20:16:28.
 
TDatime()
Create a TDatime and set it to the current time.
 
void Set()
Set Date/Time to current time as reported by the system.
 
UInt_t Convert(Bool_t toGMT=kFALSE) const
Convert fDatime from TDatime format to the standard time_t format.
 
Int_t GetTime() const
Return time in form of 123623 (i.e. 12:36:23)
 
static void GetDateTime(UInt_t datetime, Int_t &date, Int_t &time)
Static function that returns the date and time.
 
const char * AsString() const
Return the date & time as a string (ctime() format).
 
void ReadBuffer(char *&buffer)
Decode Date/Time from output buffer, used by I/O system.
 
static constexpr double mm