#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")));
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;
- return p;
+ int dayDiffFromToday = literalDates[n].dayDiffFromToday;
+ *this = Today();
+ if ( dayDiffFromToday )
+ {
+ *this += wxDateSpan::Days(dayDiffFromToday);
+ }
+
+ return p;
+ }
}
// what do we have?