KSquare Utilities
KKB::DateTime Class Reference

#include <DateTime.h>

Public Member Functions

 DateTime ()
 
 DateTime (const DateTime &dateTime)
 
 DateTime (const DateType &_date, const TimeType &_time)
 
 DateTime (short _year, uchar _month, uchar _day, uchar _hour, uchar _minute, uchar _second)
 
 DateTime (const KKStr &s)
 
void AddDays (kkint32 _days)
 
void AddHours (kkint32 _hours)
 
void AddMinutes (kkint32 _mins)
 
void AddSeconds (long _secs)
 
const KKB::DateTypeDate () const
 
uchar Day () const
 
KKStr HH_MM_SS () const
 
void HoursAdd (kkint32 hours)
 Add _hours to DateTime, will adjust date to accommodate 24 hour clock. More...
 
void MinutesAdd (kkint32 _mins)
 
uchar Month () const
 
bool operator!= (const DateTime &right) const
 
DateTime operator+ (const DateTime &right) const
 
DateTime operator- (const DateTime &right) const
 
bool operator< (const DateTime &right) const
 
bool operator<= (const DateTime &right) const
 
DateTimeoperator= (const DateTime &right)
 
bool operator== (const DateTime &right) const
 
bool operator> (const DateTime &right) const
 
bool operator>= (const DateTime &right) const
 
kkuint64 Seconds () const
 
void SecondsAdd (long _secs)
 
const TimeTypeTime () const
 
kkuint32 ToDays () const
 
double ToHours () const
 summary>Number seconds since "0000/01/01 00:00:00" More...
 
kkuint64 ToSeconds () const
 
short Year () const
 
KKStr YYYY_MM_DD_HH_MM_SS () const
 
KKStr YYYYMMDDHHMMSS () const
 

Detailed Description

Definition at line 204 of file DateTime.h.

Constructor & Destructor Documentation

DateTime::DateTime ( const DateTime dateTime)

Definition at line 1006 of file DateTime.cpp.

References KKB::DateType::DateType(), and KKB::TimeType::TimeType().

Referenced by KKMLL::ClassificationBiasMatrix::ClassificationBiasMatrix(), and KKJobManagment::KKJobManager::KKJobManager().

1006  :
1007  date (dateTime.date),
1008  time (dateTime.time)
1009 {}
DateTime::DateTime ( const DateType _date,
const TimeType _time 
)

Definition at line 1016 of file DateTime.cpp.

References KKB::DateType::DateType(), and KKB::TimeType::TimeType().

Referenced by operator+(), and operator-().

1018  :
1019  date (_date),
1020  time (_time)
1021 {}
DateTime::DateTime ( short  _year,
uchar  _month,
uchar  _day,
uchar  _hour,
uchar  _minute,
uchar  _second 
)

Definition at line 1028 of file DateTime.cpp.

References KKB::DateType::DateType(), and KKB::TimeType::TimeType().

Referenced by KKMLL::TrainingProcess2::TrainingProcess2().

1034  :
1035  date (_year, _month, _day),
1036  time (_hour, _minute, _second)
1037 {}
DateTime::DateTime ( const KKStr s)

Definition at line 1043 of file DateTime.cpp.

References KKB::KKStr::Concat(), KKB::KKStr::CountInstancesOf(), KKB::DateType::DateType(), KKB::KKStr::Empty(), KKB::KKStrParser::GetNextToken(), KKB::KKStrParser::GetRestOfStr(), KKB::KKStrParser::KKStrParser(), KKB::KKStr::operator+(), KKB::DateType::operator=(), KKB::TimeType::operator=(), and KKB::TimeType::TimeType().

Referenced by KKB::XmlAttributeList::AttributeValueDateTime(), KKB::KKStrParser::GetNextTokenDateTime(), and KKJobManagment::KKJobManager::StatusFileProcessLine().

1043  :
1044  date(),
1045  time ()
1046 
1047 {
1048  if (s.Empty ())
1049  return;
1050 
1051  KKStrParser parser (s);
1052 
1053  if ((s.CountInstancesOf ('-') > 2) && (s.CountInstancesOf ('/') < 1))
1054  {
1055  // Looks like the date part is broken up by '-' not '/'
1056  KKStr datePart1 = parser.GetNextToken ("- ");
1057  KKStr datePart2 = parser.GetNextToken ("- ");
1058  KKStr datePart3 = parser.GetNextToken ("- ");
1059  KKStr timeStr = parser.GetRestOfStr ();
1060 
1061  KKStr dateStr = datePart1 + "/" + datePart2 + "/" + datePart3;
1062  date = DateType (dateStr);
1063  time = TimeType (timeStr);
1064  }
1065  else
1066  {
1067  KKStr field1 = parser.GetNextToken ("- ");
1068  KKStr field2 = parser.GetNextToken ("- ");
1069  date = DateType (field1);
1070  time = TimeType (field2);
1071  }
1072 }
kkint32 CountInstancesOf(char ch) const
Definition: KKStr.cpp:1122
bool Empty() const
Definition: KKStr.h:241
Represents a Time, consisting of three fields, Hour, Minute, and Second. summary>Represents Date and ...
Definition: DateTime.h:149
Class that manages the extraction of tokens from a String without being destructive to the original s...
Definition: KKStrParser.h:18
Represents a calendar date consisting of three fields, Year, Month, and Day.
Definition: DateTime.h:28

Member Function Documentation

void DateTime::AddDays ( kkint32  _days)

Definition at line 1108 of file DateTime.cpp.

References KKB::DateType::AddDays().

1109 {
1110  date.AddDays (_days);
1111 }
void AddDays(kkint32 _days)
Definition: DateTime.cpp:381
void DateTime::AddHours ( kkint32  _hours)

Definition at line 1114 of file DateTime.cpp.

References KKB::TimeType::Hour(), KKB::DateType::operator+(), KKB::DateType::operator-(), and KKB::DateType::operator=().

Referenced by HoursAdd().

1115 {
1116  if (_hours < 0)
1117  {
1118  kkint32 newHour = time.Hour () + _hours;
1119  while (newHour < 0)
1120  {
1121  date = date - 1;
1122  newHour += 24;
1123  }
1124  time.Hour ((uchar)newHour);
1125  }
1126  else
1127  {
1128  kkint32 newHour = time.Hour () + _hours;
1129  while (newHour > 23)
1130  {
1131  date = date + 1;
1132  newHour -= 24;
1133  }
1134  time.Hour ((uchar)newHour);
1135  }
1136 } /* AddHours */
__int32 kkint32
Definition: KKBaseTypes.h:88
uchar Hour() const
Definition: DateTime.h:165
unsigned char uchar
Unsigned character.
Definition: KKBaseTypes.h:77
void DateTime::AddMinutes ( kkint32  _mins)

Definition at line 1139 of file DateTime.cpp.

References HoursAdd(), and KKB::TimeType::Minute().

Referenced by MinutesAdd().

1140 {
1141  kkint32 newMins = time.Minute () + _mins;
1142 
1143  while (newMins < 0)
1144  {
1145  HoursAdd (-1);
1146  newMins += 60;
1147  }
1148 
1149  while (newMins >= 60)
1150  {
1151  HoursAdd (1);
1152  newMins -= 60;
1153  }
1154 
1155  time.Minute ((uchar)newMins);
1156 } /* AddMinutes */
__int32 kkint32
Definition: KKBaseTypes.h:88
void HoursAdd(kkint32 hours)
Add _hours to DateTime, will adjust date to accommodate 24 hour clock.
Definition: DateTime.cpp:1186
unsigned char uchar
Unsigned character.
Definition: KKBaseTypes.h:77
uchar Minute() const
Definition: DateTime.h:166
void DateTime::AddSeconds ( long  _secs)

Definition at line 1159 of file DateTime.cpp.

References MinutesAdd(), and KKB::TimeType::Second().

Referenced by SecondsAdd().

1160 {
1161  long newSecs = time.Second () + _secs;
1162 
1163  long minsToAdd = newSecs / 60;
1164  newSecs = newSecs - (minsToAdd * 60);
1165  if (minsToAdd != 0)
1166  MinutesAdd (minsToAdd);
1167 
1168  while (newSecs < 0)
1169  {
1170  MinutesAdd (-1);
1171  newSecs += 60;
1172  }
1173 
1174  while (newSecs >= 60)
1175  {
1176  MinutesAdd (1);
1177  newSecs -= 60;
1178  }
1179 
1180  time.Second ((uchar)newSecs);
1181 } /* AddSeconds */
void MinutesAdd(kkint32 _mins)
Definition: DateTime.cpp:1194
uchar Second() const
Definition: DateTime.h:167
unsigned char uchar
Unsigned character.
Definition: KKBaseTypes.h:77
const KKB::DateType& KKB::DateTime::Date ( ) const
inline

Definition at line 230 of file DateTime.h.

Referenced by KKB::operator<<().

230 {return date;}
uchar KKB::DateTime::Day ( ) const
inline

Definition at line 238 of file DateTime.h.

References KKB::DateType::Day().

238 {return date.Day ();}
uchar Day() const
Definition: DateTime.h:72
KKStr DateTime::HH_MM_SS ( ) const

The date part will be converted into hours.

Definition at line 1222 of file DateTime.cpp.

References KKB::TimeType::Hour(), KKB::TimeType::Minute(), KKB::KKStr::operator+(), KKB::TimeType::Second(), KKB::StrFormatInt(), and KKB::DateType::ToHours().

1223 {
1224  return StrFormatInt ((date.ToHours () + time.Hour ()), "###00") + ":" +
1225  StrFormatInt (time.Minute (), "00") + ":" +
1226  StrFormatInt (time.Second (), "00");
1227 }
uchar Hour() const
Definition: DateTime.h:165
uchar Second() const
Definition: DateTime.h:167
KKStr StrFormatInt(kkint32 val, const char *mask)
Definition: KKStr.cpp:5004
uchar Minute() const
Definition: DateTime.h:166
kkuint32 ToHours() const
Definition: DateTime.cpp:511
void DateTime::HoursAdd ( kkint32  hours)

Add _hours to DateTime, will adjust date to accommodate 24 hour clock.

Definition at line 1186 of file DateTime.cpp.

References AddHours().

Referenced by AddMinutes().

1187 {
1188  AddHours (_hours);
1189 } /* HoursAdd */
void AddHours(kkint32 _hours)
Definition: DateTime.cpp:1114
void DateTime::MinutesAdd ( kkint32  _mins)

Definition at line 1194 of file DateTime.cpp.

References AddMinutes().

Referenced by AddSeconds().

1195 {
1196  AddMinutes (_mins);
1197 } /* MinutesAdd */
void AddMinutes(kkint32 _mins)
Definition: DateTime.cpp:1139
uchar KKB::DateTime::Month ( ) const
inline

Definition at line 237 of file DateTime.h.

References KKB::DateType::Month().

237 {return date.Month ();}
uchar Month() const
Definition: DateTime.h:71
bool DateTime::operator!= ( const DateTime right) const

Definition at line 1248 of file DateTime.cpp.

1249 {
1250  return Compare (right) != 0;
1251 }
DateTime DateTime::operator+ ( const DateTime right) const

Definition at line 1281 of file DateTime.cpp.

References DateTime(), KKB::DateType::DateType(), KKB::DateType::Days(), KKB::TimeType::Seconds(), and KKB::TimeType::TimeType().

1282 {
1283  kkint32 netDays = date.Days () + right.date.Days ();
1284  kkint32 netSecs = time.Seconds () + right.time.Seconds ();
1285  netSecs = netSecs % 86400;
1286 
1287  return DateTime (DateType (netDays), TimeType (netSecs));
1288 }
kkint32 Days() const
Definition: DateTime.cpp:475
kkuint32 Seconds() const
Definition: DateTime.cpp:925
__int32 kkint32
Definition: KKBaseTypes.h:88
Represents a Time, consisting of three fields, Hour, Minute, and Second. summary>Represents Date and ...
Definition: DateTime.h:149
Represents a calendar date consisting of three fields, Year, Month, and Day.
Definition: DateTime.h:28
DateTime DateTime::operator- ( const DateTime right) const

Definition at line 1293 of file DateTime.cpp.

References DateTime(), KKB::DateType::DateType(), KKB::DateType::Days(), KKB::TimeType::Seconds(), and KKB::TimeType::TimeType().

1294 {
1295  kkint32 netDays = date.Days () - right.date.Days ();
1296 
1297  kkint32 leftSecs = time.Seconds ();
1298  kkint32 rightSecs = right.time.Seconds ();
1299 
1300  while (rightSecs > leftSecs)
1301  {
1302  netDays--;
1303  leftSecs = leftSecs + 86400;
1304  }
1305 
1306  kkint32 netSecs = leftSecs - rightSecs;
1307 
1308  kkint32 numOfDaysInSecs = netSecs / 86400;
1309  netSecs = netSecs % 86400;
1310 
1311  return DateTime (DateType (netDays + numOfDaysInSecs), TimeType (netSecs));
1312 }
kkint32 Days() const
Definition: DateTime.cpp:475
kkuint32 Seconds() const
Definition: DateTime.cpp:925
__int32 kkint32
Definition: KKBaseTypes.h:88
Represents a Time, consisting of three fields, Hour, Minute, and Second. summary>Represents Date and ...
Definition: DateTime.h:149
Represents a calendar date consisting of three fields, Year, Month, and Day.
Definition: DateTime.h:28
bool DateTime::operator< ( const DateTime right) const

Definition at line 1268 of file DateTime.cpp.

Referenced by KKMLL::TrainingProcess2::CreateTrainingProcess().

1269 {
1270  return Compare (right) < 0;
1271 }
bool DateTime::operator<= ( const DateTime right) const

Definition at line 1274 of file DateTime.cpp.

1275 {
1276  return Compare (right) <= 0;
1277 }
bool DateTime::operator== ( const DateTime right) const

Definition at line 1241 of file DateTime.cpp.

1242 {
1243  return Compare (right) == 0;
1244 }
bool DateTime::operator> ( const DateTime right) const

Definition at line 1255 of file DateTime.cpp.

Referenced by KKMLL::TrainingProcess2::ExtractTrainingClassFeatures(), and KKMLL::TrainingConfiguration2::LoadFeatureDataFromTrainingLibraries().

1256 {
1257  return Compare (right) > 0;
1258 }
bool DateTime::operator>= ( const DateTime right) const

Definition at line 1262 of file DateTime.cpp.

1263 {
1264  return Compare (right) >= 0;
1265 }
kkuint64 DateTime::Seconds ( ) const

Definition at line 1092 of file DateTime.cpp.

References KKB::DateType::Seconds(), and KKB::TimeType::Seconds().

Referenced by KKB::XmlElementDateTime::ToBool(), KKB::XmlElementDateTime::ToDouble(), KKB::XmlElementDateTime::ToFloat(), and KKB::KKThread::WaitForThreadToStop().

1093 {
1094  kkuint64 secsInDate = (kkuint64)date.Seconds ();
1095  kkuint64 secsInTime = (kkuint64)time.Seconds ();
1096  return secsInDate + secsInTime;
1097 }
kkuint32 Seconds() const
Definition: DateTime.cpp:925
unsigned __int64 kkuint64
Definition: KKBaseTypes.h:91
kkuint64 Seconds() const
Definition: DateTime.cpp:502
void DateTime::SecondsAdd ( long  _secs)

Definition at line 1202 of file DateTime.cpp.

References AddSeconds().

1203 {
1204  AddSeconds (_secs);
1205 } /* SecondsAdd */
void AddSeconds(long _secs)
Definition: DateTime.cpp:1159
const TimeType& KKB::DateTime::Time ( ) const
inline

Definition at line 232 of file DateTime.h.

Referenced by KKB::KKThread::AddMsg(), and KKB::operator<<().

232 {return time;}
kkuint32 DateTime::ToDays ( ) const

Definition at line 1100 of file DateTime.cpp.

References KKB::DateType::Days().

Referenced by KKB::XmlElementDateTime::ToInt32().

1100 {return date.Days ();}
kkint32 Days() const
Definition: DateTime.cpp:475
double DateTime::ToHours ( ) const

summary>Number seconds since "0000/01/01 00:00:00"

Definition at line 1101 of file DateTime.cpp.

References KKB::DateType::Days(), and KKB::TimeType::ToHours().

kkuint64 DateTime::ToSeconds ( ) const

Number seconds since "0000/01/01 00:00:00"

Definition at line 1105 of file DateTime.cpp.

References KKB::DateType::Days(), and KKB::TimeType::Seconds().

1105 {return (kkuint64)(date.Days ()) * (kkuint64)86400 + time.Seconds ();};
kkint32 Days() const
Definition: DateTime.cpp:475
kkuint32 Seconds() const
Definition: DateTime.cpp:925
unsigned __int64 kkuint64
Definition: KKBaseTypes.h:91
short KKB::DateTime::Year ( ) const
inline

Definition at line 236 of file DateTime.h.

References KKB::DateType::Year().

236 {return date.Year ();}
short Year() const
Definition: DateTime.h:70
KKStr DateTime::YYYY_MM_DD_HH_MM_SS ( ) const

Definition at line 1216 of file DateTime.cpp.

References KKB::TimeType::HH_MM_SS(), KKB::KKStr::operator+(), and KKB::DateType::YYYY_MM_DD().

Referenced by KKB::XmlElementKeyValuePairs::Add(), KKB::XmlElementDateTime::ToKKStr(), KKMLL::Model::WriteModelXMLFields(), and KKB::XmlElementDateTime::WriteXML().

1217 {
1218  return date.YYYY_MM_DD () + "-" + time.HH_MM_SS ();
1219 }
KKStr HH_MM_SS() const
Definition: DateTime.cpp:841
KKStr YYYY_MM_DD() const
Convert into displayable string; ex: 20011/05/17.
Definition: DateTime.cpp:701
KKStr DateTime::YYYYMMDDHHMMSS ( ) const

Definition at line 1209 of file DateTime.cpp.

References KKB::TimeType::HHMMSS(), KKB::KKStr::operator+(), and KKB::DateType::YYYYMMDD().

1210 {
1211  return date.YYYYMMDD () + time.HHMMSS ();
1212 }
KKStr HHMMSS() const
Definition: DateTime.cpp:847
KKStr YYYYMMDD() const
Convert into displayable string; ex: 20110517.
Definition: DateTime.cpp:727

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