Django搞乱了python的datetime吗?

2024-06-02 06:06:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件,我用ctime检查它的创建时间。以下是代码片段(不完整,只是重要部分):

import time
import pytz
import os
from datetime import datetime

myfile = SOMEWHERE

myfile_ctime = os.path.getctime(myfile)
d = datetime.strptime(time.ctime(myfile_ctime), '%a %b %d %H:%M:%S %Y')
# d here is Tue Mar 25 00:33:40 2014 for example
ny = pytz.timezone("America/New_York")
d_ny = ny.localize(d)
mytz = pytz.timezone(MY_TZ_WHATEVER)
myd = d_ny.astimezone(mytz)
final_date = myd.strftime('%Y-%m-%d %H:%M:%S')
print(final_date + "some string") 
# is now 2014-03-25 01:33:40some string, correctly with the timezone.

当它作为一个简单的python脚本运行时,一切正常。但是当我试图从time.ctime(myfile_ctime)获取日期时,templatetags/myfile.py中的函数中运行相同的代码时,然后我从上面的代码片段中得到Tue Mar 25 04:33:40而不是Tue Mar 25 00:33:40(独立脚本和Django中的代码相同,我将日期与另一个字符串连接起来)。在

我的问题是:我只使用Python标准库,在两个地方使用相同的代码片段,在同一个环境中读取相同的文件。为什么有区别?在中执行设置设置.py把标准库中的东西弄坏了?只是在Django环境中,它改变了标准库的工作方式?为什么当调用独立时一切都会正常工作?在

(我支持apache,不知道这是否相关)


Tags: 文件代码import标准datetimetimeisos
2条回答

确保中的时区设置设置.py,有关Django时区设置的详细信息,请查看此页:https://docs.djangoproject.com/en/1.6/ref/settings/#time-zone

./django/conf/__init__.py:126:中,TZ环境变量基于settings.py设置。在

os.environ['TZ'] = self.TIME_ZONE

我的时区是UTC。在

这就是为什么独立脚本结果与Django中的代码段不同的原因:在独立运行时,没有设置环境变量TZ。在

现在,当从myfile创建一个datetime对象时,我只需要从服务器添加tzinfo(/etc/sysconfig/clock)。我的代码现在如下所示:

^{pr2}$

我希望这对某人有用。像往常一样,阅读资料。:)

相关问题 更多 >