我希望能够对python中的datetime.strptime()
进行非常严格的验证
Python datetime.strptime
似乎正在接受格式错误的值,而不是引发异常(并尝试宽大地解析它们)。
示例:
print datetime.strptime('201013112', '%Y%m%d%H%M')
预期输出:
ValueError: ...
实际输出:
2010-01-31 01:02:00
是否有一种方法可以使验证极其严格(在此特定示例中,我希望长度与YYYYMMDDHHMM格式匹配)(或者也许是库替代方法)。 我无法添加长度检查,因为格式不固定。
答案 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得出的。您应该检查自己的期望是否与此参考相符。