gcc -Wall strptime-checkvalid.c -o strptime-checkvalid
./strptime-checkvalid
'201401' is valid
'foo' is invalid
'2013' is invalid
'' is invalid
'201301 ' is valid
We expect that Time::Piece->strptime() is respecting unix strptime(3) because you did wrote "see strptime man page." in the POD.
We also expect that every invalid format date string will be notified via croak.
So my opinion is that Time::Piece->strptime() should check if date string has completely satisfied format specifier and croak if not.
Time::Piece->strptime()
croaks if first argumentSTRING
isn't matching second argumentFORMAT
. For example, following code will croaked:But there are cases that invalid date string is ignored and Time::Piece object is returned regardless to date string.
Case1: Not enough date string
Date string and format are compared from ahead and trailing format specifiers are ignored if date string reached end of string while parsing.
Case2: Empty date string
Empty date string is ignored even if one or more format has been specified.
These behavior is differ from unix strptime(3). Following code can tell us what kind of date string should be treated as invalid:
We expect that
Time::Piece->strptime()
is respecting unix strptime(3) because you did wrote "see strptime man page." in the POD. We also expect that every invalid format date string will be notified via croak. So my opinion is thatTime::Piece->strptime()
should check if date string has completely satisfied format specifier and croak if not.Regards.