Add time zone parsing support for only specifying HH
This commit is contained in:
committed by
Dimitri Schoolwerth
parent
101433190f
commit
1a5163a882
@@ -1521,18 +1521,25 @@ wxDateTime::ParseFormat(const wxString& date,
|
||||
}
|
||||
|
||||
// Optionally followed by a colon separator.
|
||||
bool mustHaveMinutes = false;
|
||||
if ( input != end && *input == wxS(':') )
|
||||
{
|
||||
mustHaveMinutes = true;
|
||||
++input;
|
||||
}
|
||||
|
||||
// Followed by exactly 2 digits for minutes (MM).
|
||||
unsigned long minutes;
|
||||
// Optionally followed by exactly 2 digits for minutes (MM).
|
||||
unsigned long minutes = 0;
|
||||
if ( !GetNumericToken(numRequiredDigits, input, end,
|
||||
&minutes, &numScannedDigits)
|
||||
|| numScannedDigits != numRequiredDigits)
|
||||
{
|
||||
return false; // No match.
|
||||
if (mustHaveMinutes || numScannedDigits)
|
||||
{
|
||||
// No match if we must have minutes, or digits
|
||||
// for minutes were specified but not exactly 2.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if ( hours > 12 || minutes > 59 )
|
||||
|
@@ -906,6 +906,11 @@ void DateTimeTestCase::TestTimeZoneParse()
|
||||
// Z as UTC designator.
|
||||
{ "13:37Z", true },
|
||||
|
||||
// Only containing HH offset.
|
||||
{ "09:37-04", true },
|
||||
{ "13:37+00", true },
|
||||
{ "17:37+04", true },
|
||||
|
||||
// Colon as HH and MM separator.
|
||||
{ "17:37+04:00", true },
|
||||
|
||||
@@ -918,6 +923,8 @@ void DateTimeTestCase::TestTimeZoneParse()
|
||||
{ "00:00-1300" }, // Offset out of range.
|
||||
{ "00:00+1300" }, // Offset out of range.
|
||||
|
||||
{ "00:00+00:" }, // Minutes missing after colon separator.
|
||||
|
||||
// Not exactly 2 digits for hours and minutes.
|
||||
{ "17:37+4" },
|
||||
{ "17:37+400" },
|
||||
|
Reference in New Issue
Block a user