From fd9f9f4c4bd7ce951e408032bbb0218d93ef4783 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 5 Jan 2000 16:59:31 +0000 Subject: [PATCH] ParseDate() understands tomorrow and yesterday as well as today git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5261 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/datetime.cpp | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/common/datetime.cpp b/src/common/datetime.cpp index e933221766..e9b1e7c677 100644 --- a/src/common/datetime.cpp +++ b/src/common/datetime.cpp @@ -2963,16 +2963,36 @@ const wxChar *wxDateTime::ParseDate(const wxChar *date) 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 { - // nothing can follow this, so stop here - p += len; + const wxChar *str; + int dayDiffFromToday; + } literalDates[] = + { + { 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?