All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions
QGpCoreTools::DateTimeData Class Reference

#include <DateTime.h>

List of all members.

Public Member Functions

void addDays (int d)
void addHours (int h)
void addMinutes (int m)
void addMonths (int m)
void addSeconds (double s)
void addYears (int y)
QDate date () const
QDateTime dateTime () const
 DateTimeData ()
 DateTimeData (const QDateTime &dt)
 DateTimeData (const DateTimeData &o)
double fractions () const
bool fromString (const QString &text, const QString &format)
void fromTime_t (time_t t)
void fromTime_t (QString t)
int hour () const
bool isNull () const
int minute () const
bool operator!= (const DateTimeData &o)
bool operator< (const DateTimeData &o)
void operator= (const DateTimeData &o)
bool operator== (const DateTimeData &o)
bool operator> (const DateTimeData &o)
int second () const
double secondsTo (const DateTimeData &o) const
bool setDate (int year=1900, int month=1, int day=1)
void setDate (const QDate &d)
void setDateTime (const QDateTime &dt)
bool setTime (int hour=0, int minute=0, int second=0, double fractions=0.0)
QString toString (const QString &format, int precision) const
time_t toTime_t () const
QString toTime_t (int precision) const
 ~DateTimeData ()

Constructor & Destructor Documentation

{
  _seconds=0;
  _fractions=0.0;
}
QGpCoreTools::DateTimeData::DateTimeData ( const QDateTime &  dt) [inline]
    : QSharedData()
{
  _date=dt.date();
  _seconds=QTime(0,0).secsTo(dt.time());
  _fractions=0;
}
    : QSharedData(o)
{
  _date=o._date;
  _seconds=o._seconds;
  _fractions=o._fractions;
}
{}

Member Function Documentation

void QGpCoreTools::DateTimeData::addDays ( int  d) [inline]
{
  _date=_date.addDays(d);
}
{
  int d;
  if(h<0) {
    if(h<-24) {
      d=h/24;
      h-=d*24;
    } else {
      d=0;
    }
    _seconds+=h*60*60;
    if(_seconds<0) {
      d-=1;
      _seconds+=86400;
    }
  } else {
    if(h>24) {
      d=h/24;
      h-=d*24;
    } else {
      d=0;
    }
    _seconds+=h*60*60;
    if(_seconds>86400) {
      d+=1;
      _seconds-=86400;
    }
  }
  _date=_date.addDays((int)d);
}
{
  int d;
  if(m<0) {
    if(m<-60*24) {
      d=m/(60*24);
      m-=d*60*24;
    } else {
      d=0;
    }
    _seconds+=m*60;
    if(_seconds<0) {
      d-=1;
      _seconds+=86400;
    }
  } else {
    if(m>60*24) {
      d=m/(60*24);
      m-=d*60*24;
    } else {
      d=0;
    }
    _seconds+=m*60;
    if(_seconds>86400) {
      d+=1;
      _seconds-=86400;
    }
  }
  _date=_date.addDays((int)d);
}
void QGpCoreTools::DateTimeData::addMonths ( int  m) [inline]
{
  _date.addMonths(m);
}

Add s seconds. can have have any size without any loss of precision.

{
  double d;
  if(s<0.0) {
    if(s<-86400.0) {
      d=floor(s/86400.0);
      s-=d*86400.0;
    } else {
      d=0.0;
    }
    double sr=floor(s);
    _seconds+=(int)sr;
    s-=sr;
    _fractions+=s;
    if(_fractions<0.0) {
      _fractions+=1.0;
      _seconds-=1;
    }
    if(_seconds<0) {
      d-=1;
      _seconds+=86400;
    }
  } else {
    if(s>86400.0) {
      d=floor(s/86400.0);
      s-=d*86400.0;
    } else {
      d=0.0;
    }
    double sr=floor(s);
    _seconds+=(int)sr;
    s-=sr;
    _fractions+=s;
    if(_fractions>=1.0) {
      _fractions-=1.0;
      _seconds+=1;
    }
    if(_seconds>86400) {
      d+=1;
      _seconds-=86400;
    }
  }
  _date=_date.addDays((int)d);
}
void QGpCoreTools::DateTimeData::addYears ( int  y) [inline]
{
  _date.addYears(y);
}
QDate QGpCoreTools::DateTimeData::date ( ) const [inline]
QDateTime QGpCoreTools::DateTimeData::dateTime ( ) const [inline]
{
  QDateTime dt(_date);
  dt=dt.addSecs(_seconds);
  return dt;
}
double QGpCoreTools::DateTimeData::fractions ( ) const [inline]
bool QGpCoreTools::DateTimeData::fromString ( const QString &  text,
const QString &  format 
)

References QGpCoreTools::DateTimeParser::parse(), and QGpCoreTools::DateTimeFromString::value().

{
  DateTimeFromString p(text);
  if(p.parse(format)) {
    bool ok;
    *this=p.value(ok);
    return ok;
  } else {
    return false;
  }
}

Referenced by fromTime_t().

{
  QDateTime dt;
  dt.setTimeSpec(Qt::UTC);
  dt.setTime_t(t);
  _date=dt.date();
  _seconds=dt.time().hour()*3600+dt.time().minute()*60+dt.time().second();
  _fractions=0.0;
}

References fromTime_t().

{
  QRegExp dec("[\\.,]");
  int decIndex=t.indexOf(dec, 0);
  if(decIndex==-1) {
    fromTime_t(t.toInt());
  } else {
    fromTime_t(t.left(decIndex).toInt());
    _fractions=t.mid(decIndex).toDouble();
  }
}
int QGpCoreTools::DateTimeData::hour ( ) const [inline]
bool QGpCoreTools::DateTimeData::isNull ( ) const [inline]
{return _date.isNull() && _seconds==0 && _fractions==0.0;}
int QGpCoreTools::DateTimeData::minute ( ) const [inline]
bool QGpCoreTools::DateTimeData::operator!= ( const DateTimeData o) [inline]
{
  return _date!=o._date ||
         _seconds!=o._seconds ||
         _fractions!=o._fractions;
}
bool QGpCoreTools::DateTimeData::operator< ( const DateTimeData o) [inline]
{
  if(_date==o._date) {
    if(_seconds==o._seconds) {
      return _fractions<o._fractions;
    } else {
      return _seconds<o._seconds;
    }
  } else {
    return _date<o._date;
  }
}
void QGpCoreTools::DateTimeData::operator= ( const DateTimeData o) [inline]
{
  _date=o._date;
  _seconds=o._seconds;
  _fractions=o._fractions;
}
bool QGpCoreTools::DateTimeData::operator== ( const DateTimeData o) [inline]
{
  return _date==o._date &&
         _seconds==o._seconds &&
         _fractions==o._fractions;
}
bool QGpCoreTools::DateTimeData::operator> ( const DateTimeData o) [inline]
{
  if(_date==o._date) {
    if(_seconds==o._seconds) {
      return _fractions>o._fractions;
    } else {
      return _seconds>o._seconds;
    }
  } else {
    return _date>o._date;
  }
}
int QGpCoreTools::DateTimeData::second ( ) const [inline]
{
  double s=0;
  s+=_date.daysTo(o._date)*86400;
  s+=o._seconds-_seconds;
  s+=o._fractions-_fractions;
  return s;
}
bool QGpCoreTools::DateTimeData::setDate ( int  year = 1900,
int  month = 1,
int  day = 1 
) [inline]

Referenced by QGpCoreTools::DateTimeFromString::value().

{
  return _date.setDate(year, month, day);
}
void QGpCoreTools::DateTimeData::setDate ( const QDate &  d) [inline]
{
  _date=d;
}
void QGpCoreTools::DateTimeData::setDateTime ( const QDateTime &  dt) [inline]
{
  _date=dt.date();
  _seconds=QTime(0,0,0).secsTo(dt.time());
  _fractions=dt.time().msec()*0.001;
}
bool QGpCoreTools::DateTimeData::setTime ( int  hour = 0,
int  minute = 0,
int  second = 0,
double  fractions = 0.0 
)

References fractions(), and second().

Referenced by QGpCoreTools::DateTimeFromString::value().

{
  if(hour<0 || hour>23 ||
     minute<0 || minute>59 ||
     second<0 || second>59 ||
     fractions<0.0 || fractions>=1.0) {
    return false;
  }
  _seconds=3600*hour+60*minute+second;
  _fractions=fractions;
  return true;
}
QString QGpCoreTools::DateTimeData::toString ( const QString &  format,
int  precision 
) const

References QGpCoreTools::DateTimeParser::parse(), and QGpCoreTools::DateTimeToString::value().

{
  DateTimeToString p(*this, precision);
  p.parse(format);
  return p.value();
}

Referenced by toTime_t().

{
  QDateTime dt;
  dt.setDate(_date);
  int h=_seconds/3600;
  int m=_seconds/60-h*60;
  int s=_seconds-m*60-h*3600;
  dt.setTimeSpec(Qt::UTC);
  dt.setTime(QTime(h, m, s));
  return dt.toTime_t();
}
QString QGpCoreTools::DateTimeData::toTime_t ( int  precision) const

References toTime_t().

{
  QString s;
  s+=QString::number(toTime_t());
  s+=QString::number(_fractions, 'f', precision).mid(1);
  return s;
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines