如果不是由用户使用Python datetime设置的,如何将微秒设置为零?
我试图接受用户输入,并从该字符串创建一个时间对象。大概是这样的:如果不是由用户使用Python datetime设置的,如何将微秒设置为零?,python,python-datetime,Python,Python Datetime,我试图接受用户输入,并从该字符串创建一个时间对象。大概是这样的: import datetime user_input = '14:24:41.992181' time = datetime.datetime.strptime(user_input, '%H:%M:%S.%f').time() 但是,假设用户输入是'14:24:41',那么我会得到一个格式错误,这是可以理解的。我想做的是,对于这样的输入,时间对象的微秒精度将自动设置为000000。我注意到使用%z对时区做了类似的操作,它内置于
import datetime
user_input = '14:24:41.992181'
time = datetime.datetime.strptime(user_input, '%H:%M:%S.%f').time()
但是,假设用户输入是'14:24:41'
,那么我会得到一个格式错误,这是可以理解的。我想做的是,对于这样的输入,时间对象的微秒精度将自动设置为000000
。我注意到使用%z
对时区做了类似的操作,它内置于strtime()
方法中
理想的方法是什么 当用户输入与格式字符串不匹配时,可以使用try/except并处理该情况
import datetime
user_inputs = ['14:24:41.992181','14:24:41']
for user_input in user_inputs:
try:
dt = datetime.datetime.strptime(user_input, '%H:%M:%S.%f')
except ValueError:
dt = datetime.datetime.strptime(user_input, '%H:%M:%S')
print(dt.strftime('%H:%M:%S.%f'))
输出
14:24:41.992181
14:24:41.000000
当用户输入与格式字符串不匹配时,可以使用try/except并处理该情况
import datetime
user_inputs = ['14:24:41.992181','14:24:41']
for user_input in user_inputs:
try:
dt = datetime.datetime.strptime(user_input, '%H:%M:%S.%f')
except ValueError:
dt = datetime.datetime.strptime(user_input, '%H:%M:%S')
print(dt.strftime('%H:%M:%S.%f'))
输出
14:24:41.992181
14:24:41.000000
您可以对输入字符串的长度运行一个简单的检查,假设您需要标准化的输入
user_input = '14:24:41'
if len(user_input) == 8:
user_input += '.000000'
time = datetime.datetime.strptime(user_input, '%H:%M:%S.%f').time()
您可以对输入字符串的长度运行一个简单的检查,假设您需要标准化的输入
user_input = '14:24:41'
if len(user_input) == 8:
user_input += '.000000'
time = datetime.datetime.strptime(user_input, '%H:%M:%S.%f').time()
您可能需要注意的是,预期会更频繁发生的情况应该放在try
块中。try..except
通常比if
检查调用是否成功快,但如果实际输入了except
块(这很好,因为异常应该是异常事件,因此很少发生)。谢谢,这是非常优雅的。您可能需要注意,预期会更频繁发生的情况应该放在try
块中。try..except
通常比if
检查调用是否成功快,但如果实际输入了except
块(这很好,因为异常应该是异常事件,因此很少发生)。谢谢,这非常优雅。