fix ParseFormat("%d") to set the date it finds (#10002)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55900 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
06936905a4
commit
b5f85206a9
@ -3667,6 +3667,11 @@ wxDateTime::ParseFormat(const wxString& date,
|
||||
Tm tm = tmDef;
|
||||
|
||||
// set the date
|
||||
if ( haveMon )
|
||||
{
|
||||
tm.mon = mon;
|
||||
}
|
||||
|
||||
if ( haveYear )
|
||||
{
|
||||
tm.year = year;
|
||||
@ -3675,16 +3680,15 @@ wxDateTime::ParseFormat(const wxString& date,
|
||||
// TODO we don't check here that the values are consistent, if both year
|
||||
// day and month/day were found, we just ignore the year day and we
|
||||
// also always ignore the week day
|
||||
if ( haveMon && haveDay )
|
||||
if ( haveDay )
|
||||
{
|
||||
if ( mday > GetNumOfDaysInMonth(tm.year, mon) )
|
||||
if ( mday > GetNumOfDaysInMonth(tm.year, tm.mon) )
|
||||
{
|
||||
wxLogDebug(_T("bad month day in wxDateTime::ParseFormat"));
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
tm.mon = mon;
|
||||
tm.mday = mday;
|
||||
}
|
||||
else if ( haveYDay )
|
||||
|
@ -645,7 +645,7 @@ void DateTimeTestCase::TestTimeFormat()
|
||||
const char *result = dt2.ParseFormat(s, fmt);
|
||||
if ( !result )
|
||||
{
|
||||
// converion failed - should it have?
|
||||
// conversion failed - should it have?
|
||||
CPPUNIT_ASSERT( kind == CompareNone );
|
||||
}
|
||||
else // conversion succeeded
|
||||
@ -685,9 +685,15 @@ void DateTimeTestCase::TestTimeFormat()
|
||||
}
|
||||
}
|
||||
|
||||
wxDateTime dt;
|
||||
|
||||
// test partially specified dates too
|
||||
wxDateTime dtDef(26, wxDateTime::Sep, 2008);
|
||||
CPPUNIT_ASSERT( dt.ParseFormat("17", "%d") );
|
||||
CPPUNIT_ASSERT_EQUAL( 17, dt.GetDay() );
|
||||
|
||||
// test compilation of some calls which should compile (and not result in
|
||||
// ambiguity because of char*<->wxCStrData<->wxString conversions)
|
||||
wxDateTime dt;
|
||||
wxString s("foo");
|
||||
CPPUNIT_ASSERT( !dt.ParseFormat("foo") );
|
||||
CPPUNIT_ASSERT( !dt.ParseFormat(wxT("foo")) );
|
||||
|
Loading…
Reference in New Issue
Block a user