1. 程式人生 > >python 時間處理(time和datetime介紹)

python 時間處理(time和datetime介紹)

python的有關時間的有哪幾種呢?今天我們介紹兩個:time和datetime

 time模組提供各種操作時間的函式

 datetime模組定義了下面這幾個類:

  • datetime.date:表示日期的類。常用的屬性有year, month, day;
  • datetime.time:表示時間的類。常用的屬性有hour, minute, second, microsecond;
  • datetime.datetime:表示日期時間。
  • datetime.timedelta:表示時間間隔,即兩個時間點之間的長度。
  • datetime.tzinfo:與時區有關的相關資訊。

python中處理的事件型別有哪幾種呢?

* 時間戳的方式(相對於1970.1.1 00:00:00以秒計算的偏移量),時間戳是惟一的,如:1382678303.098

* 以陣列的形式表示即(struct_time),共有九個元素,分別表示,同一個時間戳的struct_time會因為時區不同而不同如:time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=21, tm_sec=33, tm_wday=4, tm_yday=298, tm_isdst=0)

解釋一下,前六個就不用解釋了,解釋下後四個:

tm_wday:(0-6, Monday is 0)

tm_yday:(day in the year, 1-366)

tm_isdst:(-1, 0 or 1)  0:普通  1:DST夏令時比正常的早一個小時  -1:根據當前時區

* 還有一種只能算作一種顯示型式,字串,如:2013-10-25 13:29:39.543000

為了從實用的角度出發就不把time和datetime分開了,從獲取和輸出的角度來整理下:

1. 如何獲得時間,如何獲得各種格式的時間?

time模組:

>>> import time
>>> time.time()#獲得當前時間的時間戳
1382679270.196
>>> time.clock()#第一次執行獲得當前時間的時間戳,第二次執行就是間隔上一次執行的時間間隔
2.1380998706449576e-06 >>> time.mktime((2013,11,11,11,11,11,1,1,0))#利用mktime函式建立一個時間戳 1384139471.0

datetime模組:

>>> from datetime import *
>>> date.today()*獲取今天的日期
datetime.date(2013, 10, 25)
>>> datetime.today()#獲取今天的日期和時間
datetime.datetime(2013, 10, 25, 13, 42, 53, 455000)
>>> datetime.now()#獲取當前的日期和時間
datetime.datetime(2013, 10, 25, 13, 43, 0, 322000)

2. 有了時間後,再實際中會設計到格式之間的處理,比如資料庫中一般會儲存時間戳格式的,而現實的時候應該是字串了吧,那個struct_time,好吧,用的比較少吧?

time模組:

時間戳-->struct_time,字串

>>> import time
>>> a = time.time()#獲取當前時間的時間戳
>>> a
1382680272.862
>>> time.ctime(a)*將時間戳轉換為時間字串
'Fri Oct 25 13:51:12 2013'
>>> time.gmtime(a)#將時間轉換為struct_time
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=5, tm_min=51, tm_sec=12, tm_wday=4, tm_yday=298, tm_isdst=0)
>>> time.localtime()#將當前時間轉換為struct_time
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=52, tm_sec=1, tm_wday=4, tm_yday=298, tm_isdst=0)
>>> time.localtime(a)#將a轉換為struct_time
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=51, tm_sec=12, tm_wday=4, tm_yday=298, tm_isdst=0)

struct_time-->字串,時間戳

>>> import time
>>> a = time.localtime()
>>> a
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=57, tm_sec=18, tm_wday=4, tm_yday=298, tm_isdst=0)
>>> b = time.asctime(a)#轉換為字串
>>> b
'Fri Oct 25 13:57:18 2013'
>>> time.mktime(a)#轉換為時間戳
1382680638.0
>>> time.strftime("%a %b %d %H:%M:%S %Y",a)#轉換為字串
'Fri Oct 25 13:57:18 2013'

字串-->struct_time,PS:字串不能直接轉換為時間戳,需要先轉為struct_time

>>> import time
>>> a
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=14, tm_min=5, tm_sec=28, tm_wday=4, tm_yday=298, tm_isdst=0)
>>> b = time.asctime(a)
>>> b
'Fri Oct 25 14:05:28 2013'
>>> c = time.strptime(b,'%a %b %d %H:%M:%S %Y')#按照格式轉換為9元組
>>> c
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=14, tm_min=5, tm_sec=28, tm_wday=4, tm_yday=298, tm_isdst=-1)

datetime模組:

介紹幾個datetime模組常用的方法:

datetime.fromtimestamp(time.time())#將時間戳轉換為字串

from datetime import *
import time

print 'datetime.max:', datetime.max
print 'datetime.min:', datetime.min
print 'datetime.resolution:', datetime.resolution
print 'today():', datetime.today()
print 'now():', datetime.now()
print 'utcnow():', datetime.utcnow()
print 'fromtimestamp(tmstmp):', datetime.fromtimestamp(time.time())#將時間戳轉換為字串
print 'utcfromtimestamp(tmstmp):', datetime.utcfromtimestamp(time.time())

# ---- 結果 ----
# datetime.max: 9999-12-31 23:59:59.999999
# datetime.min: 0001-01-01 00:00:00
# datetime.resolution: 0:00:00.000001
# today(): 2010-04-07 09:48:16.234000
# now(): 2010-04-07 09:48:16.234000
# utcnow(): 2010-04-07 01:48:16.234000  # 中國位於+8時間,與本地時間相差8
# fromtimestamp(tmstmp): 2010-04-07 09:48:16.234000
# utcfromtimestamp(tmstmp): 2010-04-07 01:48:16.234000

3. 處理一些特殊的情況,比如需要設定某個時間的間距的時候,用到datetime的datetime.timedelta類。

見程式碼:

#! /usr/bin/python
# coding=utf-8

from datetime import datetime,timedelta

"""
timedelta代表兩個datetime之間的時間差
"""
now = datetime.now()
past = past = datetime(2010,11,12,13,14,15,16)

timespan = now - past
#這會得到一個負數
past - now
attrs = [
("days",""),( 'seconds',""),( 'microseconds',"毫秒")
#('min',"最小"),( 'max',"最大"),
]
for k,v in attrs:
    "timespan.%s = %s #%s" % (k,getattr(timespan, k),v)

"""
總共相差的秒數
"""
timespan.total_seconds()

"""
例項化一個timespan
請注意它的引數順序
timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
"""
timespan = timedelta(days=1)##timespan = timedelta(minutes=30)
now - timespan #返回的是datetime型
now + timespan

timespan * 2 #還可以乘哦。代表二倍
timespan / 13

#增加一個月
from calendar import monthrange
now + timedelta(days=monthrange(start.year,start.month)[1])

最後列出格式化字串中的意義:

%a 星期的簡寫。如 星期三為Web
%A 
星期的全寫。如 星期三為Wednesday
%b 
月份的簡寫。如4月份為Apr
%B月份的全寫。如4月份為April 

%c:  
日期時間的字串表示。(如: 04/07/10 10:43:39)
%d:  
日在這個月中的天數(是這個月的第幾天)
%f:  
微秒(範圍[0,999999])
%H:  
小時(24小時制,[0, 23])
%I:  
小時(12小時制,[0, 11])
%j:  
日在年中的天數 [001,366](是當年的第幾天)
%m:  
月份([01,12])
%M:  
分鐘([00,59])
%p:  
AM或者PM
%S:  
秒(範圍為[00,61],為什麼不是[00, 59],參考python手冊~_~)
%U:  
周在當年的週數當年的第幾周),星期天作為周的第一天
%w:  
今天在這周的天數,範圍為[0, 6],6表示星期天
%W:  
周在當年的週數(是當年的第幾周),星期一作為周的第一天
%x:  
日期字串(如:04/07/10)
%X:  
時間字串(如:10:43:39)
%y:  
2個數字表示的年份
%Y:  
4個數字表示的年份
%z:  
與utc時間的間隔 (如果是本地時間,返回空字串)
%Z:  
時區名稱(如果是本地時間,返回空字串)
%%:  
%% => %

例子:mysql中select當天的資料:

today = datetime.datetime.today()
print today
yestoday = today - datetime.timedelta(days=1)
print yestoday
content1 = db.query("select * from log where time > %s and time < %s",yestoday,today)


如果取的是前一天的0點到24點的資料則:

day = datetime.datetime.now()
oneday = datetime.timedelta(days=1)
day = day - oneday
date_from = datetime.datetime(day.year, day.month, day.day, 00, 00, 00)
date_to = datetime.datetime(day.year, day.month, day.day, 23, 59, 59)

相關推薦

python 時間處理timedatetime介紹

python的有關時間的有哪幾種呢?今天我們介紹兩個:time和datetime  time模組提供各種操作時間的函式  datetime模組定義了下面這幾個類: datetime.date:表示日期的類。常用的屬性有year, month, day; datetime.ti

python時間模塊timedatetime

python時間模塊time python時間模塊datetime python時間模塊 通用時間格式: 1.時間戳(timestamp) import time time.time() 1970年-目前 2.格式化的時間字符串 3.元組(struct_time)共九

Python中日期時間進行操作timedatetime

Python中提供了多個用於對日期和時間進行操作的內建模組:time模組、datetime模組和calendar模組。其中time模組是通過呼叫C庫實現的,所以有些方法在某些平臺上可能無法呼叫,但是其提供的大部分介面與C標準庫time.h基本一致。time模組相比,datetime模組提供的介面更直

python時間處理Datetime

上一篇內容瞭解了time模組,接下來看下Datetime模組,這裡主要想解決的問題是如何計算兩個時間的差,並且返回秒,分鐘,小時,所以內容主要更偏向於解決問題,如果大家沒有看到自己需要的,最後會放上官方文件供大家參考。 首先看一下它具有的類及描述:

python時間處理Time

平常的工作與學習中,會遇到許許多多與時間相關的問題,例如時間戳,時間格式化等等。所以今天就帶大家瞭解一下python中處理時間的模組,time,更多的是希望大家不在坑裡反覆迴圈的進去出來,相信大家都比我聰明 -_ -... 首先,獲取當前時間(以下程式碼預設匯入time模組,不再重複

python時間處理pandas.to_datetime

前兩篇內容講了兩個單獨的python庫函式,今天帶大家認識一個常用的工具,pandas.to_datetime(),它是pandas庫的一個方法,pandas庫想必大家非常熟悉了,這裡不再多說。這個方法的實用性在於,當需要批量處理時間資料時,無疑是最好用的。 首先看一下它的主要幾個引數,官方

python初學一for迴圈語句介紹

一、for迴圈基本知識:        1、for語句語法:                      for 與 while不同的是,for

python中反射__import__getattr使用

反射: 1、可通過字串的形式匯入模組   1.1、單層匯入  __import__('模組名') View Code  

mp4格式檔案轉碼後處理qt-faststart工具介紹

當前很多工具能提供mp4格式的轉換輸出,但有時輸出的格式拿到網路上後發現需要完整下載後才能開始播放,而不能像網上的很多視訊那樣一開始就能播放(邊下邊放),造成這個問題的原因是一些描述mp4檔案資訊的moov atom元資料預設放置在了視訊檔案的最後,而所有的播放器(包括獨立的、網路化的——如瀏覽器)

python之SSH互動式非互動式

python中有一個paramiko,功能強大,用來做SSH比較方便 先上程式碼 import paramikoclass SSHConnection(object): def __init__(self, host, port, username, passwo

spring boot 架構問題 時間處理 對映,時區問題

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8 4.12日 http://blog.csdn.net/buzaiguihun/article/details/

python 3 之日期與時間處理模塊datedatetime

python 時間 處理模塊 前言相關術語的解釋時間的表現形式time模塊datetime模塊時間格式碼總結前言 在開發工作中,我們經常需要用到日期與時間,如: 作為日誌信息的內容輸出計算某個功能的執行時間用日期命名一個日誌文件的名稱記錄或展示某文章的發布或修改時間其他Python中提供了多個用於

Python之日期與時間處理模組datedatetime

本節內容 前言 相關術語的解釋 時間的表現形式 time模組 datetime模組 時間格式碼 總結 前言 在開發工作中,我們經常需要用到日期與時間,如: 作為日誌資訊的內容輸出 計算某個功能的執行時間 用日期命名一個日誌檔案的名稱 記錄或展示某文章的釋出或修改

python 時間模塊小結time and datetime

間隔 -i date對象 per inf ear macbook port 兩個 一:經常使用的時間方法 1.得到當前時間 使用time模塊,首先得到當前的時間戳 In [42]: time.time() Out[42]: 1408066927.208922 將時間戳轉換

python基礎學習時間timedatetime模塊

使用 負數 orm 本地 amp 元組 format 夏令時 字符轉換 時間模塊time和datetime()時間表現為三種格式 1.時間戳 2.時間元組 3.格式化字符串(2017-11-1)時間戳:通常來說時間戳表示的是從格林威治1970年1月1日00:00:00

python時間處理包:datetimetime

time包 time包基於C語言的庫函式(library functions)。Python的直譯器通常是用C編寫的,Python的一些函式也會直接呼叫C語言的庫函式。 import time print(time.time()) # wall clock time, unit: s

python 時間模組小結time and datetime

一:經常使用的時間方法 1.得到當前時間 使用time模組,首先得到當前的時間戳 In [42]: time.time() Out[42]: 1408066927.208922 將時間戳轉換為時間元組 struct_time In [43]: time.localti

python timedatetime的常用轉換處理

一、time 1、獲取當前時間和時區 >>> now = time.time() # 當前時間 float型別 >>> time.strftime("%Y-%m-%d %H:%M:%S") #當前時間 str '2016-11

timedatetime時間戳---python

time模組   time模組提供各種操作時間的函式 說明:一般有兩種表示時間的方式:        1.時間戳的方式(相對於1970.1.1 00:00:00以秒計算的偏移量),時間戳是惟一的        2.以陣列的形式表示即(struct_time),共有九個元素

Python 資料處理擴充套件包: pandas 模組的DataFrame介紹建立基本操作

DataFrame是Pandas中的一個表結構的資料結構,包括三部分資訊,表頭(列的名稱),表的內容(二維矩陣),索引(每行一個唯一的標記)。 一、DataFrame的建立 有多種方式可以建立DataFrame,下面舉例介紹。 例1: 通過list建立 >