: m_tz(tz)
{
msec = 0;
- sec = tm.tm_sec;
- min = tm.tm_min;
- hour = tm.tm_hour;
- mday = tm.tm_mday;
+ sec = (wxDateTime::wxDateTime_t)tm.tm_sec;
+ min = (wxDateTime::wxDateTime_t)tm.tm_min;
+ hour = (wxDateTime::wxDateTime_t)tm.tm_hour;
+ mday = (wxDateTime::wxDateTime_t)tm.tm_mday;
mon = (wxDateTime::Month)tm.tm_mon;
year = 1900 + tm.tm_year;
wday = tm.tm_wday;
dayDiff += GetNumOfDaysInMonth(year, mon);
}
- mday += dayDiff;
+ mday = (wxDateTime::wxDateTime_t)( mday + dayDiff );
while ( mday > GetNumOfDaysInMonth(year, mon) )
{
mday -= GetNumOfDaysInMonth(year, mon);
// Weekday and monthday stuff
// ----------------------------------------------------------------------------
-bool wxDateTime::SetToTheWeek(wxDateTime_t numWeek,
- WeekDay weekday,
- WeekFlags flags)
+// convert Sun, Mon, ..., Sat into 6, 0, ..., 5
+static inline int ConvertWeekDayToMondayBase(int wd)
+{
+ return wd == wxDateTime::Sun ? 6 : wd - 1;
+}
+
+/* static */
+wxDateTime
+wxDateTime::SetToWeekOfYear(int year, wxDateTime_t numWeek, WeekDay wd)
{
wxASSERT_MSG( numWeek > 0,
_T("invalid week number: weeks are counted from 1") );
- int year = GetYear();
+ // Jan 4 always lies in the 1st week of the year
+ wxDateTime dt(4, Jan, year);
+ dt.SetToWeekDayInSameWeek(wd);
+ dt += wxDateSpan::Weeks(numWeek - 1);
+
+ return dt;
+}
+// use a separate function to avoid warnings about using deprecated
+// SetToTheWeek in GetWeek below
+static wxDateTime
+SetToTheWeek(int year,
+ wxDateTime::wxDateTime_t numWeek,
+ wxDateTime::WeekDay weekday,
+ wxDateTime::WeekFlags flags)
+{
// Jan 4 always lies in the 1st week of the year
- Set(4, Jan, year);
- SetToWeekDayInSameWeek(weekday, flags) += wxDateSpan::Weeks(numWeek - 1);
+ wxDateTime dt(4, wxDateTime::Jan, year);
+ dt.SetToWeekDayInSameWeek(weekday, flags);
+ dt += wxDateSpan::Weeks(numWeek - 1);
+ return dt;
+}
+
+bool wxDateTime::SetToTheWeek(wxDateTime_t numWeek,
+ WeekDay weekday,
+ WeekFlags flags)
+{
+ int year = GetYear();
+ *this = ::SetToTheWeek(year, numWeek, weekday, flags);
if ( GetYear() != year )
{
// oops... numWeek was too big
return true;
}
+wxDateTime wxDateTime::GetWeek(wxDateTime_t numWeek,
+ WeekDay weekday,
+ WeekFlags flags) const
+{
+ return ::SetToTheWeek(GetYear(), numWeek, weekday, flags);
+}
+
wxDateTime& wxDateTime::SetToLastMonthDay(Month month,
int year)
{
static inline
wxDateTime::wxDateTime_t GetDayOfYearFromTm(const wxDateTime::Tm& tm)
{
- return gs_cumulatedDays[wxDateTime::IsLeapYear(tm.year)][tm.mon] + tm.mday;
+ return (wxDateTime::wxDateTime_t)(gs_cumulatedDays[wxDateTime::IsLeapYear(tm.year)][tm.mon] + tm.mday);
}
wxDateTime::wxDateTime_t wxDateTime::GetDayOfYear(const TimeZone& tz) const
return GetDayOfYearFromTm(GetTm(tz));
}
-// convert Sun, Mon, ..., Sat into 6, 0, ..., 5
-static inline int ConvertWeekDayToMondayBase(int wd)
-{
- return wd == wxDateTime::Sun ? 6 : wd - 1;
-}
-
wxDateTime::wxDateTime_t
wxDateTime::GetWeekOfYear(wxDateTime::WeekFlags flags, const TimeZone& tz) const
{
}
}
- return week;
+ return (wxDateTime::wxDateTime_t)week;
}
wxDateTime::wxDateTime_t wxDateTime::GetWeekOfMonth(wxDateTime::WeekFlags flags,
// yday lies in December then
if ( (mon == Dec) || (yday <= gs_cumulatedDays[isLeap][mon + 1]) )
{
- Set(yday - gs_cumulatedDays[isLeap][mon], mon, year);
+ Set((wxDateTime::wxDateTime_t)(yday - gs_cumulatedDays[isLeap][mon]), mon, year);
break;
}
return (wxChar *)NULL;
}
- wxDateTime_t day = *p++ - _T('0');
+ wxDateTime_t day = (wxDateTime_t)(*p++ - _T('0'));
if ( wxIsdigit(*p) )
{
day *= 10;
- day += *p++ - _T('0');
+ day = (wxDateTime_t)(day + (*p++ - _T('0')));
}
if ( *p++ != _T(' ') )
return (wxChar *)NULL;
}
- wxDateTime_t hour = *p++ - _T('0');
+ wxDateTime_t hour = (wxDateTime_t)(*p++ - _T('0'));
if ( !wxIsdigit(*p) )
{
}
hour *= 10;
- hour += *p++ - _T('0');
+ hour = (wxDateTime_t)(hour + (*p++ - _T('0')));
if ( *p++ != _T(':') )
{
return (wxChar *)NULL;
}
- wxDateTime_t min = *p++ - _T('0');
+ wxDateTime_t min = (wxDateTime_t)(*p++ - _T('0'));
if ( !wxIsdigit(*p) )
{
}
min *= 10;
- min += *p++ - _T('0');
+ min = (wxDateTime_t)(min + *p++ - _T('0'));
wxDateTime_t sec = 0;
if ( *p++ == _T(':') )
return (wxChar *)NULL;
}
- sec = *p++ - _T('0');
+ sec = (wxDateTime_t)(*p++ - _T('0'));
if ( !wxIsdigit(*p) )
{
}
sec *= 10;
- sec += *p++ - _T('0');
+ sec = (wxDateTime_t)(sec + *p++ - _T('0'));
}
if ( *p++ != _T(' ') )
{
wxString date = wxGetTranslation(literalDates[n].str);
size_t len = date.length();
- if ( wxStrlen(p) >= len && (wxString(p, len).CmpNoCase(date) == 0) )
+ if ( wxStrlen(p) >= len )
{
- // nothing can follow this, so stop here
- p += len;
-
- int dayDiffFromToday = literalDates[n].dayDiffFromToday;
- *this = Today();
- if ( dayDiffFromToday )
+ wxString str(p, len);
+ if ( str.CmpNoCase(date) == 0 )
{
- *this += wxDateSpan::Days(dayDiffFromToday);
- }
+ // nothing can follow this, so stop here
+ p += len;
- return p;
+ int dayDiffFromToday = literalDates[n].dayDiffFromToday;
+ *this = Today();
+ if ( dayDiffFromToday )
+ {
+ *this += wxDateSpan::Days(dayDiffFromToday);
+ }
+
+ return p;
+ }
}
}
}
else // may be either day or year
{
- wxDateTime_t maxDays = haveMon
+ wxDateTime_t maxDays = (wxDateTime_t)(
+ haveMon
? GetNumOfDaysInMonth(haveYear ? year : Inv_Year, mon)
- : 31;
+ : 31
+ );
// can it be day?
if ( (val == 0) || (val > (unsigned long)maxDays) )
{
// no need to check in month range as always < 12, but
// the days are counted from 1 unlike the months
- day = (wxDateTime_t)mon + 1;
+ day = (wxDateTime_t)(mon + 1);
haveDay = true;
}
else
// we're in the current year then
if ( (year > 0) && (year <= (int)GetNumOfDaysInMonth(Inv_Year, mon)) )
{
- day = year;
+ day = (wxDateTime_t)year;
haveMon = true;
haveYear = false;
wxDateTimeHolidayAuthority::~wxDateTimeHolidayAuthority()
{
- // nothing to do here
+ // required here for Darwin
}
// ----------------------------------------------------------------------------