Alexander Belopolsky added the comment:
I would prefer to accept "denormalized" "%Y %W %w" combinations. Note that
while Mac OSX and glibc versions of strptime produce different results, neither
implementation signals an error by returning NULL.
> In C the strptime function doesn't return valid date for such input.
This is not true. In C, struct tm is not required to contain normalized data.
I am attaching a modified version of Serhiy's strptimetest.c:
$ diff -u strptimetest.c strptimetest2.c
--- strptimetest.c 2014-12-30 13:45:17.000000000 -0500
+++ strptimetest2.c 2014-12-31 12:56:17.000000000 -0500
@@ -16,6 +16,7 @@
exit(1);
}
strptime(argv[1], argv[2], &tm);
+ mktime(&tm);
strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", &tm);
puts(buf);
return 0;
With this modification, I get on Linux
$ ./a.out "0 2015 2" "%W %Y %w"
2014-11-29 00:00:00
which is still wrong, but I think this is a glibc issue: mktime accepted
strptime result as valid even though it failed to normalize it correctly.
----------
Added file: http://bugs.python.org/file37576/strptimetest2.c
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue23136>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com