使用python获取本地时区的几种方法
2011-04-29 17:30
921 查看
第一种方法:
说到使用python来操作timezone,首先想到的肯定是win32timezone了。。。
我试着用win32timezone获取了一下,结果如下:
打印的结果,可以看到: 使用函数,是可以得到结果,但是如果使用print之后,跟只使用函数是不同的,甚至打印win32timezone.now().tzinfo的结果却是Unknow。我看到各种函数的类型之后,发现,他们本身是个class型(我猜的),不是str型,所以打印出来的结果是不同的
所以使用win32timezone的方法看来行不通,因为程序写的长一点,是不可能用IDLE交互运行的。。。
第二种方法:
后来我去看了timezone的函数原型,地址:%Python_Home%/Lib/site-packages/win32/lib/win32timezone.py
发现有一个函数是这么写的:
所以,我发现,在python中获取time zone key的方法是从注册表中获取,因为用了'_winreg',所以,既然调用win32timezone无效,那么我也直接从注册表中获取。
TimeZone 的 位置为:
[HKEY_CURRENT_USER/Software/Microsoft/Windows
NT/CurrentVersion/Time Zones]
KeyName为:
TimeZoneKeyName
所以我可以这么获取:
所以用这种方法成功了。。。
废话一句,其实用注册表获得键值的方法很强大,一切跟win32相关的信息,都可以从注册表中获得,例如用户名之类的。。。
第三种方法:
今天无意闲看,发现了一个很简单的方法,例子:
这个方法简单的另人咂舌。。。。
为什么用%Z (注意是大写的Z)可以打印出来时区呢,因为,在strftime函数中有定义:
strftime(...)
strftime(format[, tuple]) -> string
将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
所以这下很明了了。。。用这种方法,可以算出这是这一年的第几天,第几周,etc...
说到使用python来操作timezone,首先想到的肯定是win32timezone了。。。
我试着用win32timezone获取了一下,结果如下:
]>>> from win32timezone import * >>> now() datetime.datetime(2011, 4, 29, 17, 9, 24, 623000, tzinfo=TimeZoneInfo(u'China Standard Time', True)) >>> print now() 2011-04-29 17:09:27.154000+08:00 >>> print type(now()) <type 'datetime.datetime'> >>> now().tzinfo TimeZoneInfo(u'China Standard Time', True) >>> print now().tzinfo Unknown >>> print type(now().tzinfo) <class 'win32timezone.TimeZoneInfo'>
打印的结果,可以看到: 使用函数,是可以得到结果,但是如果使用print之后,跟只使用函数是不同的,甚至打印win32timezone.now().tzinfo的结果却是Unknow。我看到各种函数的类型之后,发现,他们本身是个class型(我猜的),不是str型,所以打印出来的结果是不同的
所以使用win32timezone的方法看来行不通,因为程序写的长一点,是不可能用IDLE交互运行的。。。
第二种方法:
后来我去看了timezone的函数原型,地址:%Python_Home%/Lib/site-packages/win32/lib/win32timezone.py
发现有一个函数是这么写的:
]def _get_time_zone_key(subkey=None): "Return the registry key that stores time zone details" key = _RegKeyDict.open(_winreg.HKEY_LOCAL_MACHINE, TimeZoneInfo.tzRegKey) if subkey: key = key.subkey(subkey) return key
所以,我发现,在python中获取time zone key的方法是从注册表中获取,因为用了'_winreg',所以,既然调用win32timezone无效,那么我也直接从注册表中获取。
TimeZone 的 位置为:
[HKEY_CURRENT_USER/Software/Microsoft/Windows
NT/CurrentVersion/Time Zones]
KeyName为:
TimeZoneKeyName
所以我可以这么获取:
]import _winreg key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, r'Software/Microsoft/Windows NT/CurrentVersion/Time Zones') value, type = _winreg.QueryValueEx(key, 'TimeZoneKeyName') print value #----Result:----# >>> China Standard Time
所以用这种方法成功了。。。
废话一句,其实用注册表获得键值的方法很强大,一切跟win32相关的信息,都可以从注册表中获得,例如用户名之类的。。。
第三种方法:
今天无意闲看,发现了一个很简单的方法,例子:
]>>> import time >>> str = time.strftime('%Z', time.localtime()) >>> print str China Standard Time
这个方法简单的另人咂舌。。。。
为什么用%Z (注意是大写的Z)可以打印出来时区呢,因为,在strftime函数中有定义:
strftime(...)
strftime(format[, tuple]) -> string
将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
所以这下很明了了。。。用这种方法,可以算出这是这一年的第几天,第几周,etc...
相关文章推荐
- python中快速获取本地时区当天0点时间戳的一种方法
- 使用 Python 获取两个列表的交集、并集、差集的常用方法
- python获取字母在字母表对应位置的几种方法及性能对比较
- 【用Python写爬虫】获取html的方法【一】:使用urllib
- python 方法无法在线程中使用(附python获取网络流量)
- Python random模块(获取随机数)常用方法和使用例子
- as3可能能获取本地IP的几种方法
- Python中数组的几种使用方法
- 【用Python写爬虫】获取html的方法【一】:使用urllib
- 分享 silverlight oob模式下, 获取本地打印机信息类 和 使用方法
- 使用python 获取进程pid号的方法
- Python random模块(获取随机数)常用方法和使用例子
- Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
- python中使用sys模板和logging模块获取行号和函数名的方法
- 使用anaconda本地安装python包的方法
- 使用Python获取并处理IP的类型及格式方法
- Python random模块(获取随机数)常用方法和使用例子
- mybatis中获取SqlSessionFactory的几种方法及其相关使用
- 【用Python写爬虫】获取html的方法【二】:使用pycurl
- Python获取网页指定内容(BeautifulSoup工具的使用方法)