如何从python datetime.time字段获取小时整数

时间:2014-10-02 03:04:55

标签: python django datetime

我的datetime.time字段等于3:00。

如何从此对象获得3作为整数?

我试过了:

transaction_time = form.cleaned_data['transaction_time']
print transaction_time.hour

我收到错误:

  

'unicode'对象没有属性'hour'

3 个答案:

答案 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