DCL 3.7.4
Loading...
Searching...
No Matches
DateTime Struct Reference

#include <DateTime.h>

Public Member Functions

 DateTime ()
 DateTime (const DateTime &_src)
 DateTime (time_t _timer)
 DateTime (const Date &_date, const Time &_time)
 DateTime (int _year, int _month, int _day, int _hour, int _min, int _sec, int _millisecond=0)
void assign (time_t _timer)
void assign (const Date &_date, const Time &_time)
void assign (int _year, int _month, int _day, int _hour, int _min, int _sec, int _millisecond=0)
const DateTimeoperator= (const DateTime &_src)
const DateTimeoperator+= (const Interval &_iv)
const DateTimeoperator-= (const Interval &_iv)
String toString () const
String toStringF (const wchar_t *_format=NULL) const
Datedate ()
const Datedate () const
Timetime ()
const Timetime () const

Static Public Member Functions

static int compare (const DateTime &_dt1, const DateTime &_dt2)
static int64_t getCurrentTimeMillis ()
static DateTime getCurrentUTCTime ()
static DateTime getCurrentLocalTime ()

Public Attributes

sqlite3_int64 iJD
int Y
int M
int D
int h
int m
int tz
double s
int ms

Static Public Attributes

static const wchar_t * FORMAT_STRING = L"%Y-%m-%d %H:%M:%S"

Protected Attributes

Date __date
Time __time

Detailed Description

Definition at line 217 of file DateTime.h.

Constructor & Destructor Documentation

◆ DateTime() [1/5]

DateTime::DateTime ( )
inline

Definition at line 220 of file DateTime.h.

220{ }

◆ DateTime() [2/5]

DateTime::DateTime ( const DateTime & _src)

Definition at line 708 of file DateTime.cpp.

709{
710 __date = _src.__date;
711 __time = _src.__time;
712}
Time __time
Definition DateTime.h:275
Date __date
Definition DateTime.h:274

◆ DateTime() [3/5]

DateTime::DateTime ( time_t _timer)

Definition at line 714 of file DateTime.cpp.

715{
716 assign(_timer);
717}
void assign(time_t _timer)
Definition DateTime.cpp:750

◆ DateTime() [4/5]

DateTime::DateTime ( const Date & _date,
const Time & _time )

Definition at line 719 of file DateTime.cpp.

720{
721 __date = _date;
722 __time = _time;
723}

◆ DateTime() [5/5]

DateTime::DateTime ( int _year,
int _month,
int _day,
int _hour,
int _min,
int _sec,
int _millisecond = 0 )

Definition at line 725 of file DateTime.cpp.

727{
728 __date.assign(_year, _month, _day);
729 __time.assign(_hour, _min, _sec, _millisecond);
730}

Member Function Documentation

◆ assign() [1/3]

void DateTime::assign ( const Date & _date,
const Time & _time )

Definition at line 765 of file DateTime.cpp.

766{
767 __date = _date;
768 __time = _time;
769}

◆ assign() [2/3]

void DateTime::assign ( int _year,
int _month,
int _day,
int _hour,
int _min,
int _sec,
int _millisecond = 0 )

Definition at line 771 of file DateTime.cpp.

773{
774 __date.assign(_year, _month, _day);
775 __time.assign(_hour, _min, _sec, _millisecond);
776}

◆ assign() [3/3]

void DateTime::assign ( time_t _timer)

Definition at line 750 of file DateTime.cpp.

751{
752 long tm_gmtoff = __get_timezone__();
753
754 __date.assign(
755 (long) (719163 + ((_timer + tm_gmtoff) / SEC_PER_DAY)) // 1970-01-01 00:00:00 + time
756 );
757 __time.assign(
758 0,
759 0,
760 _timer % SEC_PER_DAY + tm_gmtoff,
761 0
762 );
763}
#define SEC_PER_DAY
Definition DateTime.cpp:395

◆ compare()

int DateTime::compare ( const DateTime & _dt1,
const DateTime & _dt2 )
static

Definition at line 886 of file DateTime.cpp.

887{
888 if (_dt1.__date < _dt2.__date)
889 return -1;
890 else if (_dt1.__date == _dt2.__date) {
891 if (_dt1.__time < _dt2.__time)
892 return -1;
893 else if (_dt1.__time == _dt2.__time)
894 return 0;
895 }
896 return 1;
897}

◆ date() [1/2]

Date & DateTime::date ( )
inline

Definition at line 152 of file DateTime.inl.

153{
154 return __date;
155}

◆ date() [2/2]

const Date & DateTime::date ( ) const
inline

Definition at line 157 of file DateTime.inl.

158{
159 return __date;
160}

◆ getCurrentLocalTime()

DateTime DateTime::getCurrentLocalTime ( )
static

Definition at line 954 of file DateTime.cpp.

955{
956 DateTime r;
957#ifdef __WINNT__
958 struct _timeb timeb;
959 _ftime_s(&timeb);
960
961 r.__date.assign(
962 (long) (719163 + ((timeb.time - timeb.timezone * 60) / SEC_PER_DAY)) // 1970-01-01 00:00:00 + time
963 );
964 r.__time.assign(
965 0,
966 -timeb.timezone,
967 timeb.time % SEC_PER_DAY,
968 timeb.millitm
969 );
970#else
971 long tm_gmtoff = __get_timezone__();
972
973 struct timeval tv;
974 gettimeofday(&tv, NULL);
975
976 r.__date.assign(
977 719163 + (tv.tv_sec + tm_gmtoff) / SEC_PER_DAY // 1970-01-01 00:00:00 + time
978 );
979 r.__time.assign(
980 0,
981 0,
982 tv.tv_sec % SEC_PER_DAY + tm_gmtoff,
983 tv.tv_usec / 1000
984 );
985#endif
986 return r;
987}
#define NULL
Definition Config.h:312
IOException *size_t r
Definition MediaInfo.cpp:82

◆ getCurrentTimeMillis()

int64_t DateTime::getCurrentTimeMillis ( )
static

Definition at line 899 of file DateTime.cpp.

900{
901#ifdef __WINNT__
902 SYSTEMTIME time;
903 GetSystemTime(&time);
904
905 Date dt(time.wYear, time.wMonth, time.wDay);
906 int64_t r = dt.days() * 24;
907 r = (r + time.wHour) * 60;
908 r = (r + time.wMinute) * 60;
909 r = (r + time.wSecond) * 1000;
910 r += time.wMilliseconds;
911 return r;
912#else
913 struct timeval tv;
914 gettimeofday(&tv, NULL);
915 int64_t r = tv.tv_sec * 1000;
916 r += tv.tv_usec / 1000;
917 return r;
918#endif
919}
Time & time()
Definition DateTime.inl:162

◆ getCurrentUTCTime()

DateTime DateTime::getCurrentUTCTime ( )
static

Definition at line 921 of file DateTime.cpp.

922{
923 DateTime r;
924#ifdef __WINNT__
925 struct _timeb timeb;
926 _ftime_s(&timeb);
927
928 r.__date.assign(
929 (long) (719163 + (timeb.time / SEC_PER_DAY)) // 1970-01-01 00:00:00 + time
930 );
931 r.__time.assign(
932 0,
933 0,
934 timeb.time % SEC_PER_DAY,
935 timeb.millitm
936 );
937#else
938 struct timeval tv;
939 gettimeofday(&tv, NULL);
940
941 r.__date.assign(
942 719163 + tv.tv_sec / SEC_PER_DAY // 1970-01-01 00:00:00 + time
943 );
944 r.__time.assign(
945 0,
946 0,
947 tv.tv_sec % SEC_PER_DAY,
948 tv.tv_usec / 1000
949 );
950#endif
951 return r;
952}

◆ operator+=()

const DateTime & DateTime::operator+= ( const Interval & _iv)

Definition at line 786 of file DateTime.cpp.

787{
788 int64_t msec = (int64_t)__date.days() * MSEC_PER_DAY
789 + (int64_t)__time.totalMilliSeconds()
790 + _iv.totalMilliSeconds();
791
792 __date.assign((long)(msec / MSEC_PER_DAY));
793 __time.assign((long)(msec % MSEC_PER_DAY));
794
795 return *this;
796}
#define MSEC_PER_DAY
Definition DateTime.cpp:396
int64_t totalMilliSeconds() const
Definition DateTime.inl:116

◆ operator-=()

const DateTime & DateTime::operator-= ( const Interval & _iv)

Definition at line 798 of file DateTime.cpp.

799{
800 int64_t msec = (int64_t)__date.days() * MSEC_PER_DAY
801 + (int64_t)__time.totalMilliSeconds()
802 - _iv.totalMilliSeconds();
803
804 __date.assign((long)(msec / MSEC_PER_DAY));
805 __time.assign((long)(msec % MSEC_PER_DAY));
806
807 return *this;
808}

◆ operator=()

const DateTime & DateTime::operator= ( const DateTime & _src)

Definition at line 778 of file DateTime.cpp.

779{
780 __date = _src.__date;
781 __time = _src.__time;
782
783 return *this;
784}

◆ time() [1/2]

Time & DateTime::time ( )
inline

Definition at line 162 of file DateTime.inl.

163{
164 return __time;
165}

◆ time() [2/2]

const Time & DateTime::time ( ) const
inline

Definition at line 167 of file DateTime.inl.

168{
169 return __time;
170}

◆ toString()

String DateTime::toString ( ) const

Definition at line 843 of file DateTime.cpp.

844{
845 return __date.toString() + L" " + __time.toString();
846}

◆ toStringF()

String DateTime::toStringF ( const wchar_t * _format = NULL) const

Definition at line 851 of file DateTime.cpp.

852{
853 if (!_format)
854 _format = FORMAT_STRING;
855
856 __DCL_ASSERT(*_format != L'\0');
857
858 int year, month, day, hour, min, sec, msec;
859 __date.decode(year, month, day);
860 __time.decode(hour, min, sec, msec);
861
862 struct tm time;
863 time.tm_year = year - 1900;
864 time.tm_mon = month - 1;
865 time.tm_mday = day;
866 time.tm_hour = hour;
867 time.tm_min = min;
868 time.tm_sec = sec;
869
870 time.tm_wday = 0;
871 time.tm_yday = 0;
872 time.tm_isdst = -1;
873
874 CharBuffer* buf = CharBuffer::create(DATETIME_FORMAT_BUFFER_SIZE);
875 size_t n = wcsftime(buf->data(), DATETIME_FORMAT_BUFFER_SIZE, _format, &time);
876 __DCL_ASSERT(buf->__allocLength >= n);
877 buf->__dataLength = n;
878 __DCL_ASSERT(buf->data()[buf->__dataLength] == __T('\0'));
879
880 String r = buf;
881 buf->release();
882 return r;
883}
#define DATETIME_FORMAT_BUFFER_SIZE
Definition DateTime.h:21
#define __DCL_ASSERT(expr)
Definition Object.h:394
#define __T(str)
Definition Object.h:60
static const wchar_t * FORMAT_STRING
Definition DateTime.h:246

Member Data Documentation

◆ __date

Date DateTime::__date
protected

Definition at line 274 of file DateTime.h.

◆ __time

Time DateTime::__time
protected

Definition at line 275 of file DateTime.h.

◆ D

int DateTime::D

Definition at line 313 of file SqTypes.cpp.

◆ FORMAT_STRING

const wchar_t * DateTime::FORMAT_STRING = L"%Y-%m-%d %H:%M:%S"
static

Definition at line 246 of file DateTime.h.

◆ h

int DateTime::h

Definition at line 314 of file SqTypes.cpp.

◆ iJD

sqlite3_int64 DateTime::iJD

Definition at line 312 of file SqTypes.cpp.

◆ M

int DateTime::M

Definition at line 313 of file SqTypes.cpp.

◆ m

int DateTime::m

Definition at line 314 of file SqTypes.cpp.

◆ ms

int DateTime::ms

Definition at line 317 of file SqTypes.cpp.

◆ s

double DateTime::s

Definition at line 316 of file SqTypes.cpp.

◆ tz

int DateTime::tz

Definition at line 315 of file SqTypes.cpp.

◆ Y

int DateTime::Y

Definition at line 313 of file SqTypes.cpp.


The documentation for this struct was generated from the following files: