Python:测试unicode,并转换为time()
有时self.start是unicode: 例如 这使得datetime.comPython:测试unicode,并转换为time(),python,django,Python,Django,有时self.start是unicode: 例如 这使得datetime.com start = datetime.combine(self.job_record.date, self.start) 如何: unicode测试 从u'07:30:00'转换为datetime.time 检查unicode: >>> import types >>> type(u'07:30:00') is types.UnicodeType True >>>
start = datetime.combine(self.job_record.date, self.start)
如何:
>>> import types
>>> type(u'07:30:00') is types.UnicodeType
True
>>> type('regular string') is types.UnicodeType
False
将字符串转换为时间:
>>> import time
>>> time.strptime(u'07:30:00', '%H:%M:%S')
(1900, 1, 1, 7, 30, 0, 0, 1, -1)
检查unicode:
>>> import types
>>> type(u'07:30:00') is types.UnicodeType
True
>>> type('regular string') is types.UnicodeType
False
将字符串转换为时间:
>>> import time
>>> time.strptime(u'07:30:00', '%H:%M:%S')
(1900, 1, 1, 7, 30, 0, 0, 1, -1)
假设“07:30:00”中没有扩展字符集字符,则使用
str(self.start)
如果时间中的数字可能是特定于字符集的,请使用encode()
,并使用适当的error
参数说明符将其转换为字符串
在这种情况下,首先尝试使用str()
,然后使用except
来处理无法转换的情况(请求原谅而不是许可)可能更具python风格。另一方面,如果您尝试转换的大多数值都失败,请在应用函数之前先转换它们
作为不需要的旁白:
combine
函数需要一个datetime.date对象和一个datetime.time对象。如果确实希望避免不可预测的行为,那么请满足API的要求并传递日期
和时间
对象,而不是试图缩短文档指定的契约:在调用组合
之前转换参数,不要让combine
帮你猜。假设'07:30:00'中不会有扩展字符集,然后使用str(self.start)
如果时间中的数字可能是特定于字符集的,请使用encode()
,并使用适当的error
参数说明符将其转换为字符串
在这种情况下,首先尝试使用str()
,然后使用except
来处理无法转换的情况(请求原谅而不是许可)可能更具python风格。另一方面,如果您尝试转换的大多数值都失败,请在应用函数之前先转换它们
作为不需要的旁白:
combine
函数需要一个datetime.date对象和一个datetime.time对象。如果确实希望避免不可预测的行为,那么请满足API的要求并传递日期
和时间
对象,而不是试图缩短文档指定的契约:在调用组合
之前转换参数,而不是让combine
帮你猜。datetime.combine
抱怨,因为它希望第二个参数是datetime.time
实例,而不是字符串(或unicode字符串)
有几种方法可以将字符串转换为datetime.time
实例。一种方法是使用datetime.strtime
:
t = datetime.strptime(self.start, "%H:%M:%S").time()
start = datetime.combine(self.job_record.date, t)
datetime.combine
正在抱怨,因为它希望第二个参数是datetime.time
实例,而不是字符串(或unicode字符串)
有几种方法可以将字符串转换为datetime.time
实例。一种方法是使用datetime.strtime
:
t = datetime.strptime(self.start, "%H:%M:%S").time()
start = datetime.combine(self.job_record.date, t)
添加实际的错误消息!添加实际的错误消息!