Esempio n. 1
0
Fl_Date_Time Fl_Date_Time::convert(const long tt) {
   struct tm *t = localtime((time_t*)&tt);
   double dat,tim;
   encode_date(dat,short(t->tm_year+1900),short(t->tm_mon+1),short(t->tm_mday));
   encode_time(tim,short(t->tm_hour),short(t->tm_min),short(t->tm_sec),short(0));
   return dat + tim;
}
Esempio n. 2
0
Fl_Date_Time::Fl_Date_Time (const char * dat) {

   int i;
   // NLS stuff
   for (i=0; i<7;i++) dayname[i]=_(dayname[i]);
   for (i=0; i<12;i++) mname[i]=_(mname[i]);   

   Fl_String  s1( Fl_String(dat).trim() );
   Fl_String  s2;

   if (!*dat) {
      m_dateTime = 0;
      return;
   }
   int      p = s1.pos(" ");
   if (p >= 0) {
      s2 = s1.sub_str(p+1,20).trim();
      s1[p] = 0;
   }
   if ( strchr(s1.c_str(),dateSeparator) ) {
      encode_date(m_dateTime, s1.c_str());
      if ( strchr(s2.c_str(),timeSeparator) ) {
         double dt;
         encode_time(dt, s2.c_str());
         m_dateTime += dt;
      }
   }
   else  encode_time(m_dateTime, s1.c_str());
}
Esempio n. 3
0
void Fl_Date_Time::encode_date(double &dt,const char *dat) {
   char     bdat[64];
   short    datePart[7], partNumber = 0;
   char     *ptr = NULL;
   int i;

   memset(datePart,0,sizeof(datePart));
   upperCase(bdat, dat, sizeof(bdat));

   if (strcmp(bdat,"TODAY") == 0) {
      dt = Date();        // Sets the current date
      return;
   } else {
      int len = strlen(bdat);
      for(i = 0; i <= len && partNumber < 7; i++) {
         char c = bdat[i];
         if (c == dateSeparator || c == timeSeparator || c == ' ' || c == 0) {
            if (c == timeSeparator && partNumber < 3) partNumber = 3;
            if (ptr) { // end of token
               bdat[i] = 0;
               datePart[partNumber] = (short)atoi(ptr);
               partNumber++;
               ptr = NULL;
            }
         } else {
            if (!isdigit(c)) {
               dt = 0;
               return;
            }
            if (!ptr) ptr = bdat + i;
         }
      }
      if (partNumber < 3) { // Not enough date parts
         dt = 0;
         return;
      }
      short month=0, day=0, year=0;
      for(i = 0; i < 3; i++)
      switch (datePartsOrder[i]) {
      case 'M': month = datePart[i]; break;
      case 'D': day   = datePart[i]; break;
      case 'Y': year  = datePart[i]; break;
      }
      if (year < 100) {
         if (year < 35) year = short(year + 2000);
         else           year = short(year + 1900);
      }
      double dd;
      encode_date(dd,year,month,day);
      if (partNumber > 3) { // Time part included into string
         double d;
         encode_time(d,datePart[3],datePart[4],datePart[5],datePart[6]);
         dd += d;
      }
      dt = dd;

   }
}
Esempio n. 4
0
ISC_TIMESTAMP TimeStamp::encode_timestamp(const struct tm* times, const int fractions)
{
	fb_assert(fractions >= 0 && fractions < ISC_TIME_SECONDS_PRECISION);

	ISC_TIMESTAMP ts;
	ts.timestamp_date = encode_date(times);
	ts.timestamp_time = encode_time(times->tm_hour, times->tm_min, times->tm_sec, fractions);

	return ts;
}
Esempio n. 5
0
//----------------------------------------------------------------
// Constructors
//----------------------------------------------------------------
Fl_Date_Time::Fl_Date_Time (short year,short month,short day,short hour,short minute,short second) {
   double t;
   int i;
   // NLS stuff
   for (i=0; i<7;i++) dayname[i]=_(dayname[i]);
   for (i=0; i<12;i++) mname[i]=_(mname[i]);   
  
   encode_date(m_dateTime,year,month,day);
   encode_time(t,hour,minute,second);
   m_dateTime += t;
}
Esempio n. 6
0
void Fl_Date_Time::operator = (const char * dat) {
   encode_date(m_dateTime, dat);
}