// wxDateTime construction
// ----------------------------------------------------------------------------
-// only define this once, when included from datetime.cpp
-#ifdef wxDEFINE_TIME_CONSTANTS
- const long wxDateTime::TIME_T_FACTOR = 1000l;
-#endif // wxDEFINE_TIME_CONSTANTS
-
inline bool wxDateTime::IsInStdRange() const
{
return m_time >= 0l && (m_time / TIME_T_FACTOR) < LONG_MAX;
/* static */
inline wxDateTime wxDateTime::Today()
{
- struct tm *tm = GetTmNow();
- tm->tm_hour =
- tm->tm_min =
- tm->tm_sec = 0;
+ struct tm *time = GetTmNow();
+ time->tm_hour = 0;
+ time->tm_min = 0;
+ time->tm_sec = 0;
- return wxDateTime(*tm);
+ return wxDateTime(*time);
}
#if (!(defined(__VISAGECPP__) && __IBMCPP__ >= 400))
inline wxDateTime& wxDateTime::Set(time_t timet)
{
// assign first to avoid long multiplication overflow!
- m_time = timet;
+ m_time = timet - WX_TIME_BASE_OFFSET ;
m_time *= TIME_T_FACTOR;
return *this;
{
wxASSERT_MSG( tm.IsValid(), _T("invalid broken down date/time") );
- return Set(tm.mday, (Month)tm.mon, tm.year, tm.hour, tm.min, tm.sec);
+ return Set(tm.mday, (Month)tm.mon, tm.year,
+ tm.hour, tm.min, tm.sec, tm.msec);
}
inline wxDateTime::wxDateTime(wxDateTime_t hour,
return (time_t)-1;
}
- return (time_t)((m_time / (long)TIME_T_FACTOR).GetLo());
+ return (time_t)((m_time / (long)TIME_T_FACTOR).GetLo())+WX_TIME_BASE_OFFSET ;
}
inline bool wxDateTime::SetToLastWeekDay(WeekDay weekday,
return SetToWeekDay(weekday, -1, month, year);
}
-inline wxDateTime wxDateTime::GetWeekDayInSameWeek(WeekDay weekday) const
+inline wxDateTime wxDateTime::GetWeekDayInSameWeek(WeekDay weekday,
+ WeekFlags flags) const
{
MODIFY_AND_RETURN( SetToWeekDayInSameWeek(weekday) );
}
}
inline wxDateTime wxDateTime::GetWeek(wxDateTime_t numWeek,
- WeekDay weekday) const
+ WeekDay weekday,
+ WeekFlags flags) const
{
wxDateTime dt(*this);
- return dt.SetToTheWeek(numWeek, weekday) ? dt : wxInvalidDateTime;
+ return dt.SetToTheWeek(numWeek, weekday, flags) ? dt : wxInvalidDateTime;
}
inline wxDateTime wxDateTime::GetLastMonthDay(Month month, int year) const
inline bool wxDateTime::IsSameDate(const wxDateTime& dt) const
{
- return (m_time - dt.m_time).Abs() < MILLISECONDS_PER_DAY;
+ Tm tm1 = GetTm(),
+ tm2 = dt.GetTm();
+
+ return tm1.year == tm2.year &&
+ tm1.mon == tm2.mon &&
+ tm1.mday == tm2.mday;
}
inline bool wxDateTime::IsSameTime(const wxDateTime& dt) const