我的datetime.time字段等于3:00。
如何从此对象获得3作为整数?
我试过了:
transaction_time = form.cleaned_data['transaction_time']
print transaction_time.hour
我收到错误:
'unicode'对象没有属性'hour'
答案 0 :(得分:0)
似乎transaction_time的类型为unicode。您可以使用字符串操作来获取小时部分(transaction_time [0])或将其转换为日期时间并获取小时。
答案 1 :(得分:0)
根据文件:
如果某个字段必须为= False,并且您传递了clean()一个空值, 那么clean()将返回一个标准化的空值而不是提升 ValidationError。对于CharField,这将是一个Unicode空字符串。 对于其他Field类,它可能是None。 (这在不同领域有所不同 字段。)
https://docs.djangoproject.com/en/dev/ref/forms/fields/
正如Arun所说,我做了字符串操作来确定时间:
def set_hour_for_date(customer, hour_str, transaction_date):
meridian = hour_str[-2:]
hour = int(hour_str[:2])
if meridian == 'PM':
hour = hour + 12
relative_time = customer.time_zone.localize(datetime(
transaction_date.year,
transaction_date.month,
transaction_date.day,
hour,
0,
0,
294757))
return relative_time
答案 2 :(得分:0)
transaction_time不是时间对象,它是unicode,所以首先使用 strptime 将其转换为struct_time,然后获取字段tm_hour。
from time import strptime
t = strptime(form.cleaned_data['transaction_time'], '%H:%M')
print t.tm_hour