Python datetime.strptime似乎接受无效长度的输入

时间:2018-10-02 08:18:04

标签: python datetime python-datetime

我希望能够对python中的datetime.strptime()进行非常严格的验证

Python datetime.strptime似乎正在接受格式错误的值,而不是引发异常(并尝试宽大地解析它们)。

示例:

print datetime.strptime('201013112', '%Y%m%d%H%M')

预期输出:  ValueError: ...

实际输出: 2010-01-31 01:02:00

是否有一种方法可以使验证极其严格(在此特定示例中,我希望长度与YYYYMMDDHHMM格式匹配)(或者也许是库替代方法)。 我无法添加长度检查,因为格式不固定。

1 个答案:

答案 0 :(得分:0)

您的数据混乱。这是一个麻烦的解决方案。首先创建一个字典,将每个格式代码映射到长度,然后定义一个函数,该函数将在尝试解析为type Pausable struct { isPaused bool } func (p *Pausable) Pause() { p.isPaused = true } func (p *Pausable) Unpause() { p.isPaused = false } func (p *Pausable) PauseUntil(dur time.Duration) { p.Pause() go func() { time.Sleep(dur) p.Unpause() }() } 之前针对预期的长度进行测试:

Unpause()

长度是从Python's strftime directives得出的。您应该检查自己的期望是否与此参考相符。