比较python中的unicode类型和str类型日期

时间:2014-03-28 11:24:18

标签: python datetime

我正在尝试比较从日期类型HTML输入元素收到的日期和当前日期。

这是我的Python代码。

deadline = request.POST.get('deadline', '')
    today = datetime.date.today().strftime("%B %d, %Y")
    print type(deadline)
    print type(today)
    if deadline > today:
        task_obj = Task(user=request.user, name=name, deadline=deadline)
        task_obj.save()
        return HttpResponseRedirect(reverse('tasks'))
    else:
        return HttpResponse('Deadline cannot be before current date.')

print type(deadline)输出<type 'unicode'>print type(today)输出<type 'str'>。我如何在Python中比较这两个?

2 个答案:

答案 0 :(得分:3)

在Python 2中,如果unicode字符串不包含任何其他ASCII码点,您可以直接比较它们:

if deadline == today:

并且Python将隐式编码unicode字符串。由于你的日期不是ISO8601格式,你不能做任何事情,只能通过这种方式测试平等;您无法测试一个是大于还是小于另一个,因为您通过词典排序顺序来比较字符串!

您确实需要将HTML unicode值解析为datetime对象并进行比较:

today = datetime.date.today()
deadline = datetime.datetime.strptime(deadline, "%B %d, %Y").date()
if deadline > today:

现在您要比较datetime.date()个对象,它们实际上允许您按日期测试相对排序。

答案 1 :(得分:0)

您可以使用:

if deadline==today:
    ...