// global data
// ----------------------------------------------------------------------------
+const wxChar * wxDefaultDateTimeFormat = wxT("%c");
+const wxChar * wxDefaultTimeSpanFormat = wxT("%H:%M:%S");
+
// in the fine tradition of ANSI C we use our equivalent of (time_t)-1 to
// indicate an invalid wxDateTime object
const wxDateTime wxDefaultDateTime;
break;
}
- return !s.IsEmpty() && s.ToULong(number);
+ return !s.empty() && s.ToULong(number);
}
// scans all alphabetic characters and returns the resulting string
mday = (wxDateTime::wxDateTime_t)tm.tm_mday;
mon = (wxDateTime::Month)tm.tm_mon;
year = 1900 + tm.tm_year;
- wday = tm.tm_wday;
- yday = tm.tm_yday;
+ wday = (wxDateTime::wxDateTime_t)tm.tm_wday;
+ yday = (wxDateTime::wxDateTime_t)tm.tm_yday;
}
bool wxDateTime::Tm::IsValid() const
// compute the week day from day/month/year: we use the dumbest algorithm
// possible: just compute our JDN and then use the (simple to derive)
// formula: weekday = (JDN + 1.5) % 7
- wday = (wxDateTime::WeekDay)(GetTruncatedJDN(mday, mon, year) + 2) % 7;
+ wday = (wxDateTime::wxDateTime_t)((wxDateTime::WeekDay)(GetTruncatedJDN(mday, mon, year) + 2) % 7);
}
void wxDateTime::Tm::AddMonths(int monDiff)
// less than timezone - try to make it work for this case
if ( tm2.tm_year == 70 && tm2.tm_mon == 0 && tm2.tm_mday == 1 )
{
- // add timezone to make sure that date is in range
- tm2.tm_sec -= GetTimeZone();
-
- timet = mktime(&tm2);
- if ( timet != (time_t)-1 )
- {
- timet += GetTimeZone();
-
- return Set(timet);
- }
+ return Set((time_t)(
+ GetTimeZone() +
+ tm2.tm_hour * MIN_PER_HOUR * SEC_PER_MIN +
+ tm2.tm_min * SEC_PER_MIN +
+ tm2.tm_sec));
}
wxFAIL_MSG( _T("mktime() failed") );
(void)Set(tm);
// and finally adjust milliseconds
- return SetMillisecond(millisec);
+ if (IsValid())
+ SetMillisecond(millisec);
+
+ return *this;
}
else
{
// 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;
}
fmt += *p;
}
- if ( !fmt.IsEmpty() )
+ if ( !fmt.empty() )
{
// we've only got the flags and width so far in fmt
fmt.Prepend(_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 am, pm, token = GetAlphaToken(input);
GetAmPmStrings(&am, &pm);
- if (am.IsEmpty() && pm.IsEmpty())
+ if (am.empty() && pm.empty())
return (wxChar *)NULL; // no am/pm strings defined
if ( token.CmpNoCase(pm) == 0 )
{
}
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
}
// ----------------------------------------------------------------------------