更改django中的日期格式

时间:2012-02-27 18:09:23

标签: python django

我试图在Django中使用this eventCalendar,它以这种格式保存和显示日期:

2012-02-27T13:15:00.000+10:00

但是当我在数据库中保存事件时,它们会以这种格式保存:

Mon Feb 27 2012 13:15:00 GMT+0330 (Iraq Standard Time)

因此,由于此格式,数据库中的事件不会显示在日历上。我该如何转换这种格式? 我试过这样的事情:

datetime.strptime(mydatetime, "%Y-%m-%dT%H:%M:%S+0000")

但是我反复得到这样的错误:

'module' object has no attribute 'strptime'

编辑:日期是字符串格式

1 个答案:

答案 0 :(得分:5)

strptime用于将字符串解析为日期时间对象。格式字符串指示如何解析字符串,您希望日期时间在以后打印为字符串时采用的格式。首先,您需要使格式字符串与输入字符串的日期格式匹配。

strptime获得日期时间后,您可以将strftime与当前格式字符串一起使用,以将其显示在所需的显示中。

尽管如此,看来你的进口存在问题。错误似乎表明你已经完成了:

import datetime
datetime.strptime(...)

这是不正确的。 strptimestrftime方法是关datetime.datetime的方法,因此您需要修改导入,如:

from datetime import datetime

或者,将您的号码修改为strptime,如:

datetime.datetime.strptime(...)

<强>更新

你开始使用像Mon Feb 27 2012 13:15:00 GMT+0330 (Iraq Standard Time)这样的字符串。 Python非常棒,但它不是无所不知的;如果你想将其转换为datetime,你必须告诉它如何。这是您传递给strptime的格式字符串的目的。您需要创建一个格式字符串,表示您在数据库中表示的当前字符串日期和时间(练习留给读者)。反过来思考,你想要实际代表一个datetime,你会怎么做呢。

这会给你一个datetime。从那里,您现在可以将datetime格式化为strftime的字符串,并传递您想要的实际格式。

所以过程是:

  1. 从数据库
  2. 创建表示当前字符串的格式字符串
  3. 使用该格式字符串作为strptime的参数来获取datetime
  4. 创建一个格式字符串,表示您希望日期格式(已完成)
  5. 使用该格式字符串作为strftime的参数,将datetime从第2步转换为您想要的字符串。