1. 程式人生 > >Python學習:時間處理工具--dateutil兩個簡單用法

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):
12
date = 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: 22
parsedate = 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