[Datetime-SIG] PEP-495 - Strict Invalid Time Checking

Carl Meyer carl at oddbird.net
Tue Aug 25 22:13:09 CEST 2015

On 08/25/2015 02:10 PM, Alexander Belopolsky wrote:
> On Tue, Aug 25, 2015 at 3:36 PM, Carl Meyer <carl at oddbird.net
> <mailto:carl at oddbird.net>> wrote:
>     Given the unlikelihood of someone trying to schedule an appointment at
>     2am, I didn't care much about the specific choice of user experience for
>     the DST gaps and folds; my overriding concerns were to a) not crash the
>     application when displaying a DST-transition day, and b) minimize the
>     harm done to my codebase (in fragility or added complexity) for the sake
>     of handling this rare edge case.
> Here is my recommendation for your case.  Assuming that taking user
> entry is equivalent to parsing date and time string in some format and
> scheduling is equivalent to writing a seconds since epoch timestamp into
> some database, do the following post-PEP 495:
> dt = datetime.strptime(input, format)
> s = dt.timestamp()
> schedule(s)
> # optionally
> sdt = datetime.fromtimestamp(s)
> if dt != sdt:
>     warn("You specified an invalid time %s, we scheduled your
> appointment for %s", dt, sdt)
> Instead of a warning, your program may highlight the changed hour in read.
> This program will have no means of scheduling in the "fold=1" hour and
> will correct you if you enter time that falls in a gap.  The PEP 495
> design is motivated by precisely this type of application.

You are missing the crux of my use case, which is that I need to
generate a calendar to display to the user, with all the half-hour slots
from midnight to midnight for one day in it (and I need the actual
timezone-aware instants of the start and end time for each slot so that
I can properly populate its availability status based on a database
table of existing appointments, with start and end times stored in UTC).
So your solution, which is all about "taking user entry," is not
relevant to the use case.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/datetime-sig/attachments/20150825/9de95f80/attachment.sig>

More information about the Datetime-SIG mailing list