#define wxDEFINE_TIME_CONSTANTS // before including datetime.h
+#include <ctype.h>
+
#include "wx/datetime.h"
// ----------------------------------------------------------------------------
#ifndef WX_TIMEZONE
#if defined(__BORLANDC__) || defined(__MINGW32__) || defined(__VISAGECPP__)
#define WX_TIMEZONE _timezone
+ #elif defined(__MWERKS__)
+ long wxmw_timezone = 28800;
+ #define WX_TIMEZONE wxmw_timezone ;
#else // unknown platform - try timezone
#define WX_TIMEZONE timezone
#endif
#ifdef __WXDEBUG__
extern const wxChar *wxDumpDate(const wxDateTime* dt)
{
- static wxChar buf[20];
+ static wxChar buf[128];
wxStrcpy(buf, dt->Format(_T("%Y-%m-%d (%a) %H:%M:%S")));
{
Tm tm = GetTm(tz);
wxDateTime dtMonthStart = wxDateTime(1, tm.mon, tm.year);
- size_t nWeek = GetWeekOfYear(flags) - dtMonthStart.GetWeekOfYear(flags) + 1;
-#ifdef __VMS__ // nWeek is unsigned so avoid the warning
- int nweek2 = (int) nWeek;
- if ( nweek2 < 0 )
-#else
+ int nWeek = GetWeekOfYear(flags) - dtMonthStart.GetWeekOfYear(flags) + 1;
if ( nWeek < 0 )
-#endif
{
// this may happen for January when Jan, 1 is the last week of the
// previous year
nWeek += IsLeapYear(tm.year - 1) ? 53 : 52;
}
- return nWeek;
+ return (wxDateTime::wxDateTime_t)nWeek;
}
wxDateTime& wxDateTime::SetToYearDay(wxDateTime::wxDateTime_t yday)
while ( wxIsspace(*p) )
p++;
- wxString today = _T("today");
- size_t len = today.length();
- if ( wxString(p, len).CmpNoCase(today) == 0 )
+ // some special cases
+ static struct
+ {
+ const wxChar *str;
+ int dayDiffFromToday;
+ } literalDates[] =
{
- // nothing can follow this, so stop here
- p += len;
+ { wxTRANSLATE("today"), 0 },
+ { wxTRANSLATE("yesterday"), -1 },
+ { wxTRANSLATE("tomorrow"), 1 },
+ };
- *this = Today();
+ for ( size_t n = 0; n < WXSIZEOF(literalDates); n++ )
+ {
+ wxString date = wxGetTranslation(literalDates[n].str);
+ size_t len = date.length();
+ if ( wxString(p, len).CmpNoCase(date) == 0 )
+ {
+ // nothing can follow this, so stop here
+ p += len;
+
+ int dayDiffFromToday = literalDates[n].dayDiffFromToday;
+ *this = Today();
+ if ( dayDiffFromToday )
+ {
+ *this += wxDateSpan::Days(dayDiffFromToday);
+ }
- return p;
+ return p;
+ }
}
// what do we have?
holidays.Empty();
size_t count = ms_authorities.GetCount();
- for ( size_t n = 0; n < count; n++ )
+ for ( size_t nAuth = 0; nAuth < count; nAuth++ )
{
- ms_authorities[n]->DoGetHolidaysInRange(dtStart, dtEnd, hol);
+ ms_authorities[nAuth]->DoGetHolidaysInRange(dtStart, dtEnd, hol);
WX_APPEND_ARRAY(holidays, hol);
}