本文目錄一覽:
- 1、python中timedelta方法怎麼用
- 2、python中datetime怎麼用
- 3、python中時間序列數據的一些處理方式
- 4、python中時間的減法問題
- 5、python中如何把datetime.datetime轉換成datetime.time?
python中timedelta方法怎麼用
#! /usr/bin/python# coding=utf-8from 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)
now – timespan #返回的是datetime型
now + timespan
timespan * 2 #還可以乘哦。代表二倍
timespan / 13#增加一個月from calendar import monthrange
now + timedelta(days=monthrange(start.year,start.month)[1])
實例1:
”’時間d距離now()的長度,比如:1分鐘前,1小時前,1月前,1年前”’
Python代碼
# -*- encoding=UTF-8 -*-
import datetime
def timebefore(d):
chunks = (
(60 * 60 * 24 * 365, u’年’),
(60 * 60 * 24 * 30, u’月’),
(60 * 60 * 24 * 7, u’周’),
(60 * 60 * 24, u’天’),
(60 * 60, u’小時’),
(60, u’分鐘’),
)
#如果不是datetime類型轉換後與datetime比較
if not isinstance(d, datetime.datetime):
d = datetime.datetime(d.year,d.month,d.day)
now = datetime.datetime.now()
delta = now – d
#忽略毫秒
before = delta.days * 24 * 60 * 60 + delta.seconds #python2.7直接調用 delta.total_seconds()
#剛剛過去的1分鐘
if before = 60:
return u’剛剛’
for seconds,unit in chunks:
count = before // seconds
if count != 0:
break
return unicode(count)+unit+u”前”
實例2:
『』『當前的時間上加一天或一年減一天等操作』『』
Python代碼1
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from datetime import datetime,timedelta
now = datetime.now()
yestoday = now – timedelta(days=1)
tommorow = now + timedelta(days=1)
next_year = now + timedelta(days = 365)
Python代碼2
#使用replace()代替日期加減
from datetime import datetime
now1 = datetime.now()
now1 # datetime.datetime(2017, 2, 10, 22, 29, 48, 288500)
# 增加一天或減少一天
now2 = now1.replace(day=9)
now2 # datetime.datetime(2017, 2, 9, 22, 29, 48, 288500)
# timestrap() 函數是把日期轉化為時間戳,時間戳就是秒數
time_span = now1.timestrap() – now2.timestrap()/(24*3600)
time_span # 1
日期常用問題
1: Datetime中offset-naive與offset-aware時間的計算
在使用Django時,默認是開啟對多時區的支持的,在獲取時間的時候會是如下形式:
datetime.datetime(2014, 4, 18, 15, 37, 7, tzinfo=UTC)
我們可以利用django.utils.timezone中提供的localtime方法來將該時間轉換為本地時間:
1234 dtdatetime.datetime(2014, 4, 18, 15, 37, 7, tzinfo=UTC) localtime(dt)datetime.datetime(2014, 4, 18, 23, 37, 7, tzinfo=LocalTimezone)
有時候,我們需要將該時間與當前時間做比較,例如計算差值,你可能會想到直接這麼做:
123 import datetime now = datetime.datetime.now() now – dt
不過這是不對的,並告知如下錯誤:
123 Traceback (most recent call last): File “console”, line 1, in moduleTypeError: can’t subtract offset-naive and offset-aware datetimes
問題就出在利用datetime.datetime.now()得到的當前時間是offset-naive的,而另外一個卻是offset-aware的,因此我們需要將這裡的dt轉成與now一樣的形式,可以這麼做:
12345 dt = dt.replace(tzinfo=None) dtdatetime.datetime(2014, 4, 18, 15, 37, 7) now – dtdatetime.timedelta(0, 34108, 443000)
備註:1:timezone 獲取的日期增加和修改(比如加一天減一天)
from django.utiles import timezone
from datetime
t1 = timezone.now()
# torrow
t1+datetime.timedelta(days=1,hours=1)
2:python得到兩個時間段的每一天的列表
date_list = []
begin_date = datetime.datetime.strptime(begin_date, “%Y-%m-%d”)
end_date = datetime.datetime.strptime(end_date, “%Y-%m-%d”) while begin_date = end_date:
date_str = begin_date.strftime(“%m-%d”)
date_list.append(date_str)
begin_date += datetime.timedelta(days=1) print date_list
# 方法2(安裝boto3 庫 pip install boto3):
from datetime import datetime
from dateutil.rrule import rrule, DAILY
a = datetime(2009, 5, 30)
b = datetime(2009, 6, 9)
for dt in rrule(DAILY, dtstart=a, until=b):
print dt.strftime(“%Y-%m-%d”)
# 在原來日期上增加一年
from dateutil.relativedelta import relativedelta
from django.utils import timezone
t1 = timezone.now()
neww_year = t1 + relativedelta(years=1)
python中datetime怎麼用
””’
日期相關的操作
”’
from
datetime
import
datetime
from
datetime
import
timedelta
DATE_FMT
=
‘%Y-%m-%d’
DATETIME_FMT
=
‘%Y-%m-%d
%H:%M:%S’
DATE_US_FMT
=
‘%d/%m/%Y’
””’
格式化常用的幾個參數
Y
:
1999
y
:99
m
:
mouth
02
12
M
:
minute
00-59
S
:
second
d
:
day
H
:
hour
”’
def
dateToStr(date):
””’把datetime類型的時間格式化自己想要的格式”’
return
datetime.strftime(date,
DATETIME_FMT)
def
strToDate(strdate):
””’把str變成日期用來做一些操作”’
return
datetime.strptime(strdate,
DATETIME_FMT)
def
timeElement():
””’獲取一個時間對象的各個元素”’
now
=
datetime.today()
‘year:
%s
month:
%s
day:
%s’
%(now.year,
now.month,
now.day)
‘hour:
%s
minute:
%s
second:
%s’
%(now.hour,
now.minute,
now.second)
‘weekday:
%s
‘
%(now.weekday()+1)
#一周是從0開始的
def
timeAdd():
””’
時間的加減,前一天後一天等操作
datetime.timedelta([days[,
seconds[,
microseconds[,
milliseconds[,
minutes[,
hours[,
weeks]]]]]]])
參數可以是正數也可以是負數
得到的對象可以加也可以減
乘以數字和求絕對值
”’
atime
=
timedelta(days=-1)
now
=
datetime.strptime(‘2001-01-30
11:01:02′,
DATETIME_FMT)
now
+
atime
now
–
abs(atime)
now
–
abs(atime)*31
import
calendar
def
lastFirday():
today
=
datetime.today()
targetDay
=
calendar.FRIDAY
thisDay
=
today.weekday()
de
=
(thisDay
–
targetDay)
%
7
res
=
today
–
timedelta(days=de)
res
def
test():
dateToStr(datetime.today())
strToDate(‘2013-01-31
12:00:01′)
#timeElement()
#timeAdd()
#lastFirday()
if
__name__==’__main__’:
test()
python中時間序列數據的一些處理方式
datetime.timedelta對象代表兩個時間之間的時間差,兩個date或datetime對象相減就可以返回一個timedelta對象。
利用以下數據進行說明:
如果我們發現時間相關內容的變量為int,float,str等類型,不方便後面的分析,就需要使用該函數轉化為常用的時間變量格式:pandas.to_datetime
轉換得到的時間單位如下:
如果時間序列格式不統一,pd.to_datetime()的處理方式:
當然,正確的轉換是這樣的:
第一步:to_datetime()
第二步:astype(datetime64[D]),astype(datetime64[M])
本例中:
order_dt_diff必須是Timedelta(‘0 days 00:00:00’)格式,可能是序列使用了diff()
或者pct_change()。
前者往往要通過’/np.timedelta’去掉單位days。後者其實沒有單位。
假如我們要統計某共享單車一天內不同時間點的用戶使用數據,例如
還有其他維度的提取,年、月、日、周,參見:
Datetime properties
注意 :.dt的對象必須為pandas.Series,而不可以是Series中的單個元素
python中時間的減法問題
python日期加減
Python 中日期類型是datetime.date
日期加減的結果,以及可以對日期相加減的類型是datetime.timedelta
timedelta = date1 – date2
date1 = date2 + timedelta
datetime.timedelta(days, seconds, microseconds)
d1 = datetime.date.today()
加一天:
d2 = d1 + datetime.timedelta(1)
減一天:
d2 = d1 + datetime.timedelta(-1)
python 如何計算時間差
Python Tip]如何計算時間差
Q:如何方便的計算兩個時間的差,如兩個時間相差幾天,幾小時等
A:使用datetime模塊可以很方便的解決這個問題,舉例如下:
import datetime
d1 = datetime.datetime(2005, 2, 16)
d2 = datetime.datetime(2004, 12, 31)
(d1 – d2).days
47
上例演示了計算兩個日期相差天數的計算。
import datetime
starttime = datetime.datetime.now()
#long running
endtime = datetime.datetime.now()
print (endtime – starttime).seconds
上例演示了計算運行時間的例子,以秒進行顯示。
d1 = datetime.datetime.now()
d3 = d1 + datetime.timedelta(hours=10)
d3.ctime()
上例演示了計算當前時間向後10小時的時間。
其本上常用的類有:datetime和timedelta兩個。它們之間可以相互加減。每個類都有一些方法和屬性可以查看具體的值,如datetime可以查看:天數(day),小時數(hour),星期幾(weekday())等;timedelta可以查看:天數(days),秒數(seconds)等。
python中如何把datetime.datetime轉換成datetime.time?
用Python實現字符串和日期相互轉換的方法,具體如下:這裡用的分別是time和datetime函數來處理 importtime,datetime //日期轉化為字符串 #datetostr //輸出時間 printtime.strftime(“%Y-%m-%d%X”,time.localtime()) #strtodate //字符串轉化為日期 t=time.strptime(“2016-12-05″,”%Y-%m-%d”) y,m,d=t[0:3] //輸出時間 printdatetime.datetime(y,m,d)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/205856.html