您的位置:

python的datetime.timedelta,Python的

本文目录一览:

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()

print

'year:

%s

month:

%s

day:

%s'

%(now.year,

now.month,

now.day)

print

'hour:

%s

minute:

%s

second:

%s'

%(now.hour,

now.minute,

now.second)

print

'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)

print

now

+

atime

print

now

-

abs(atime)

print

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)

print

res

def

test():

#print

dateToStr(datetime.today())

#print

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)