django 中timezone的处理
来源:互联网 发布:土豪金麻将源码 编辑:程序博客网 时间:2024/06/02 05:37
http://www.cnblogs.com/c9com/archive/2012/06/06/2507912.html 中说了django中fromtimestamp的一个奇怪问题,我试了试,我本地没这问题,后来看到后面写到是因为重庆时区变更导致得,就翻了下django代码,想看看django是怎么处理时区得。
我们在settings文件中加入, TIME_ZONE='Asia/Shanghai', 就可以用上海本地时间了
一般我们自己很少去管理django中得时区,都是django帮我们弄好了。搜索了下代码,发现在 utils/timezone.py文件中函数get_default_timezone
def get_default_timezone(): """ Returns the default time zone as a tzinfo instance. This is the time zone defined by settings.TIME_ZONE. See also :func:`get_current_timezone`. """ global _localtime if _localtime is None: if isinstance(settings.TIME_ZONE, basestring) and pytz is not None: _localtime = pytz.timezone(settings.TIME_ZONE) else: _localtime = LocalTimezone() return _localtime
原来django 是用了一个叫pytz得东西来管理时区得, 到pytz代码下搜索timezone发现
def timezone(zone):zone = _unmunge_zone(zone) if zone not in _tzinfo_cache: if zone in all_timezones_set: fp = open_resource(zone) try: _tzinfo_cache[zone] = build_tzinfo(zone, fp) finally: fp.close() else: raise UnknownTimeZoneError(zone) return _tzinfo_cache[zone]
open_resource功能是读取zoneinfo文件夹下对应文件,不过这些文件都是二进制,实在看不出来什么,追踪也就到此为止了。
通过看代码,能知道很多原来不知道得东西。比如pytz这个东西,原来使用datetime时老是搞不清楚tzinfo这个东西,这次之后就都明白了,而且pytz又变成了我以后可用得工具,不错。以前代码量比较少,最近要多看代码,多写代码。
######################################################
2013.03.29
最近一个项目使用mongodb作为数据库,mongodb里存的数据就是UTC+0的时间,但他并,没有保存时区信息,只是在保存数据时,如果时间有时区,就转成UTC时间然后保存,如果没有时区信息,就默认为是UTC时间直接保存。为了编程方便和避免错误,我把django的TIME_ZONE设为‘Africa/Accra' (UTC+0), 但页面上还是需要根据本地环境来设置时间的,不过django这些都还不错,基本不用自己来做: https://docs.djangoproject.com/en/dev/topics/i18n/timezones/#selecting-the-current-time-zone
另外,稍微修改了下从mongodb读取时间类型的代码,使得带上时区,这样在后端处理的时候就很方便了
- django 中timezone的处理
- Django, timezone
- Python处理带timezone的datetime类型
- Python处理带timezone的datetime类型
- Python中time.strptime支持的timezone
- PHP中date.timezone的设置
- django中静态文件的处理
- django timezone datetime 时间转换
- django中json处理
- Django开发中时间的时区的处理
- Date, TimeZone, MongoDB, java中date的时区问题
- Django项目中静态文件的处理方法
- django中处理表单实例
- django 中如何处理checkbox
- PHP TimeZone 的问题
- PHP TimeZone 的问题
- TimeZone的使用
- java的TimeZone
- Unity3D游戏开发入门 —— 界面与简单编程
- 3.1 字符串移位包含的问题——编程之美
- Unity3D ——强大的跨平台3D游戏开发工具教程
- 收集的一些java线程文章
- 电子书 http://my.unix-center.net/~Simon_fu/?page_id=724
- django 中timezone的处理
- Java【图形用户界面(1)】
- Gridview 外部手工排序(非点击标题栏方式)
- log函数封装,让WIN32和android ndk共用相同的log函数,方便调试
- backtrack 5 虚拟机 安装
- 动态道指令各种功能集成
- centos配置telnet server
- uva340 - Master-Mind Hints
- iPhone/Mac Objective-C内存管理教程和原理剖析(四)系统自动创建新的autorelease pool