Python中的夏令时和格林威治时间管理到调度程序中
我打算用Python写一个日程安排应用程序,我希望在处理夏令时和格林威治标准时间时不会遇到麻烦。
举个例子,可以参考这个与PHP相关的问题563053。
有没有人做过类似的项目?
有没有人对PyTZ这个Python时区库有经验?
2 个回答
3
pytz这个库很好用。记得把你的时间转换成UTC格式并存储,然后使用pytz和datetime提供的转换方法来转换成当地时间。这里有一个关于如何使用和转换时区的例子,具体可以查看这个链接,基本上就是这样:
import datetime
import pytz
datetime.datetime(2008, 1, 31, 22, 56, 13, tzinfo=<UTC>)
utcdate.astimezone(pytz.timezone('US/Pacific'))
# result:
# datetime.datetime(2008, 1, 31, 14, 56, 13, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>)
3
当然,很多人都做过日历或调度相关的工作,对pytz也有一定了解。你具体想问什么呢?是不是在你提到的那个问题和它的回答/评论中已经有很好的解答了呢?
编辑:如果你按照其他问题中最佳答案的建议去做,就没有特别需要注意的地方。特别是,建议你在内部统一使用UTC时间(“GMT”这个词已经过时了),在输入输出时再进行时区的转换(包括夏令时等)。就像你应该在内部统一使用Unicode编码,只有在输入输出时才进行字节的编码和解码一样!
在Python的标准库中,有一个简单而灵活的模块叫做 sched,它提供了一个可配置的“事件调度器”,可能会成为你应用的核心,同时可以借助 calendar、datetime 等模块。Python Cookbook第二版中“时间与金钱”章节的一些示例可能会对你有帮助(虽然它在网上有很多盗版,但作为共同作者,我并不喜欢这个事实;-)。
如果不知道你在写什么,真的很难说更多的内容——是网页服务、网页应用、桌面应用,还是其他什么?你想支持 vCal、iCalendar、vCalendar,或者其他的互操作、同步、混合功能吗?如果是的话,想和哪些其他应用、服务或实际标准进行对接?等等等等——就像所有应用一样,如果它成功了,当然可以不断扩展;-)