Python學習:時間處理工具--dateutil兩個簡單用法
想從Blog的RSS中讀取日誌內容,再根據日期來確定哪些內容是自己所需要的,這裡需要用到兩個東西,一個是不同格式日期的解析,一個就是日期的比較了。Google一翻後,找到了dateutil這個庫:
需要注意的是,如果自己的系統裡所用的是Python 3.0以下版本的話,選擇python-dateutil 1.5即可,如果是3.0+,剛可選擇2.0版的dateutil。在Ubuntu裡,也可使用apt-get進行安裝,但安裝的會是dateutil 2.0版的。版本必須對應,否則會出現錯誤而不能正常執行。
我在自己的應用中,只用到了這個庫的兩個內容,一個是dateutil.parser,一個是dateutil.rrule,下面就這兩個方法的使用方法。
1.dateutil.parser
下面這個例子來自於 《Python Cookbook》。
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import datetime 5 import dateutil.parser 6 7 def tryparse(date): 8 kwargs = {} 9 if isinstance(date, (tuple, list)): 10 date = ''.join([str(x) for x in date]) 11 elif isinstance(date, int): 12date = str(date) 13 elif isinstance(date, dict): 14 kwargs = date 15 date = kwargs.pop('date') 16 17 try: 18 try: 19 parsedate = dateutil.parser.parse(date, **kwargs) 20 print 'Sharp %r -> %s' % (date, parsedate) 21 except ValueError: 22parsedate = dateutil.parser.parse(date, fuzzy=True, **kwargs) 23 print 'Fuzzy %r -> %s' % (date, parsedate) 24 except Exception, err: 25 print "Try as I may, I cann't parse %r (%s)" % (date, err) 26 27 if __name__ == '__main__': 28 tests = ("January 3, 2003", 29 "2001-12-5",) 30 31 for test in tests: 32 tryparse(test)
輸出是這樣的:
[email protected]:~/git/lcmd/date$ python testdate.py Sharp 'January 3, 2003' -> 2003-01-03 00:00:00 Sharp '2001-12-5' -> 2001-12-05 00:00:00
2.dateutil.rrule
rrule可計算出兩個datetime物件間相差的年月日等時間數量。
In [1]: import datetime In [2]: oneday = datetime.date datetime.date datetime.datetime datetime.datetime_CAPI In [2]: oneday = datetime.date(1970,1,1) In [3]: today = datetime.date.today() In [4]: from dateutil import rrule In [5]: days = rrule.rrule(rrule.DAILY, dtstart=oneday, until=today).count() In [6]: days Out[6]: 15282 In [8]: years = rrule.rrule(rrule.YEARLY, dtstart=oneday, until=today).count() In [9]: years Out[9]: 42 In [11]: month = rrule.rrule(rrule.MONTHLY, dtstart=oneday, until=today).count() In [12]: month Out[12]: 503自己暫時就用到這些,記錄下來,如果需要更詳細的說明,可仔細閱讀上面提到網站裡的說明文件。
相關推薦
Python學習:時間處理工具--dateutil兩個簡單用法
想從Blog的RSS中讀取日誌內容,再根據日期來確定哪些內容是自己所需要的,這裡需要用到兩個東西,一個是不同格式日期的解析,一個就是日期的比較了。Google一翻後,找到了dateutil這個庫: 需要注意的是,如果自己的系統裡所用的是Python 3.0以下版本的話,
函式指標的兩個簡單用法
/************************************************************************* > File Name: func.cpp > Author: yangjx > Mail: [email pr
工具類三:時間處理類
/** * 日期工具類 * @author Administrator * */ public class DateUtil { /** * 日期物件轉字串 * @param date * @param format * @retur
時間處理工具類(DateUtil)
package com.lvmama.comm.utils; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import ja
Python學習:集合(set)
pythonpython的set和其他語言類似, 是一個無序不重復元素集, 基本功能包括關系測試和消除重復元素. 集合對象還支持union(聯合), intersection(交), difference(差)和sysmmetric difference(對稱差集)等數學運算. sets 支持 x in s
Python學習:函數(function)
python編寫函數def是可執行的代碼。Python函數是有一個新的語句便攜的,即def。不像C這樣的編譯語言,def是一個可執行的語句,函數並不存在,知道Python運行了def後才存在。事實上,if語句、while語句升至是其他的 def中嵌套都是合法的。def創建一個函數對象,並將其賦值給某一變量名。
Python學習:作用域(namespace)
pythonPython作用域基礎Python有四個作用域:L(Local)本地也稱作局部作用域;E(Enclosing)閉包函數外的函數中;G(global)全局作用域;B(Built-in)內建作用域;變量可以在三個不同的地方分配:如果一個變量在def內賦值,它被定位在這個函數之內。如果一個變量在嵌套的d
Python學習:面向對象(OOP)
python類和實例1、類(class):有屬性有方法就是類。下面是Student類:class Student(object): def __init__(self, name, score): self.name = name self.score = score
Python學習筆記(異常處理)
except exc 剛才 file director pri 中斷 opened rec 用戶輸入了一個不合規定的值,或者需要打開的文件不存在。這些情況被稱作“異常”,一個好的程序需要能處理可能發生的異常,避免程序因此而中斷。 例如我們去打開一個文件: f = f
Python學習筆記-DNS處理模塊dnspython
python dnspython DNS處理模塊dnspython dnspython是python實現的一個DNS工具包,它支持幾乎所有的記錄類型,可以用於查詢、傳輸並動態更新ZONE信息,同時支持TSIG(事務簽名)驗證消息和EDNS0(擴展DNS)。在系統管理方面,我們可以利用其查詢功能來
python學習之異常處理
python學習之異常處理一、語法導致的異常,應該在程序運行前處理 例子: print( 輸出: File "E:/python/oldboyday9/learn1.py", line 4 if ^ SyntaxError: invalid syntax 註:輸出分三個部分,第一部分錯我
Python學習:基本數據類型與變量(中)與基礎之條件及循環(上)
sets 但是 while循環 spl view put 算數運算 sse 邏輯運算 一.數據類型和變量 1.可變與不可變數據類型 可變數據類型:在id不變的情況下,數據類型內部的元素可以改變 列表 字典 不可變數據類型:value改變,id也跟著改變
Python學習:函數進階
eva hide con span money 技術分享 from 內部 size 本節要點:命名空間及作用域,函數嵌套,函數名本質,閉包 命名空間: 命名空間的本質:存放名字與值的綁定關系。 三種命名空間: 全局命名空間 局部命名空間 內置命名空間 三種命
時間處理工具類
nim mount minute int quest lac asn ren 問題 import java.sql.Timestamp;import java.text.ParseException;import java.text.SimpleDateFormat;i
【轉載】Caffe學習:運行caffe自帶的兩個簡單例子
0.00 練習 siam 其它 sudo 單例 復制 腳本 policy 原文:http://www.cnblogs.com/denny402/p/5075490.html 為了程序的簡潔,在caffe中是不帶練習數據的,因此需要自己去下載。但在caffe根目錄下的data
python學習:函數傳參數
函數傳參 參數 傳參數 bsp pri () python學習 for [1] #!/usr/bin/python import sys def isNum(s): for i in s: if i in ‘0123456789‘:
python學習:字典排序
eve undle pat openss service cte x86_64 rac 排序 按字典值排序 按照字典value排序,類似sort -k 命令 import operator x= {1:2,3:4,4:3,2:1,0:0} sorted_x = so
第一階段Python學習:1、基礎知識、if語句、循環
定義變量 assert loop 所有 方法 right 源碼 under 速度 本文內容: 一、Python介紹級應用方向 二、Python 特性 三、hello world 程序 四、Python 格式化輸出 五、變量、數據類型、註釋 六、表達
python學習:變量
變量##變量print("Hello World!") name = "xiguapi" name2 = name print(name,name2) name= "Jack" print ("What is the value name2
Python學習:socket.gaierror: [Errno -8]
tro 啟動 socket error color strong 利用 body erro 在終端內打開python模式,利用如下代碼查詢本機hostname,這裏舉例為“xxMacBookPro.local”: import socket socket.gethostn