python中datetime函数的用法,python中datetime应用举例

http://www.itjxue.com  2023-01-06 21:26  来源:未知  点击次数: 

python怎么调用时间

datetime在python中比较常用,主要用来处理时间日期,使用前先倒入datetime模块。下面总结下本人想到的几个常用功能。

1、当前时间:

print datetime.datetime.now()2015-07-17 16:39:15.712000 print type(datetime.datetime.now())

type 'datetime.datetime'

返回的datetime时间格式。

2、当前日期

print datetime.datetime.now().date()2015-07-17 print type(datetime.datetime.now().date())

type 'datetime.date'

3、当前时间tuple

datetime.datetime.now().timetuple()time.struct_time(tm_year=2015, tm_mon=7, tm_mday=17, tm_hour=16, tm_min=51, tm_sec=26, tm_wday=4, tm_yday=198, tm_isdst=-1)

datetime.datetime.now().timetuple().tm_mday17

4、时间移动(几天、几小时前后...)

使用datetime.timedelta这个方法来前后移动时间,可以用的参数有weeks,days,hours,minutes,seconds,microseconds。

print datetime.datetime.now() + datetime.timedelta(days=1)2015-07-18 16:49:48.574000 print datetime.datetime.now() + datetime.timedelta(hours=1)2015-07-17 17:49:57.122000 print datetime.datetime.now() + datetime.timedelta(minutes=-30)2015-07-17 16:20:08.619000

上个月最后一天

print datetime.date(day=1,month=datetime.date.today().month,year=datetime.date.today().year) - datetime.timedelta(days=1)2015-06-30

5、获取两个时间的时间差

(datetime.datetime.now() - datetime.datetime.utcnow()).total_seconds()

28800.0

6、时间转化

datetime转str格式:

datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")'2015-07-17 16:58:46'

str格式转datetime格式:

datetime.datetime.strptime("2015-07-17 16:58:46","%Y-%m-%d %H:%M:%S")

datetime.datetime(2015, 7, 17, 16, 58, 46)

print datetime.datetime.strptime("2015-07-17 16:58:46","%Y-%m-%d %H:%M:%S")2015-07-17 16:58:46 print type(datetime.datetime.strptime("2015-07-17 16:58:46","%Y-%m-%d %H:%M:%S"))

type 'datetime.datetime'

datetime转timestamp:

import time now=datetime.datetime.now() time.mktime(now.timetuple())1437123812.0

timestamp转datetime:

datetime.datetime.fromtimestamp(1437123812.0)datetime.datetime(2015, 7, 17, 17, 3, 32)

print datetime.datetime.fromtimestamp(1437123812.0)

2015-07-17 17:03:32

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处理时间

python时间处理方法datetime(),下面就举几个代码案例进行说明,代码如下:

?#?-*-?coding:?utf-8?-*-?

?#?运行环境:Python3.4

?#datetime类

?#datetime是date与time的结合体,包括date与time的所有信息。

?#它的构造函数如下:

?#datetime.?datetime?(year,?month,?day[?,?hour[?,?minute[?,?second[?,?microsecond[?,?tzinfo]?]?]?]?]?)

?#各参数的含义与date、time的构造函数中的一样,要注意参数值的范围。

#?1.?datetime类定义的类属性与方法:

#datetime.min、datetime.max:datetime所能表示的最小值与最大值;

#print:?datetime.max:?9999-12-31?23:59:59.999999

#print:?datetime.min:?0001-01-01?00:00:00

from??datetime??import??*?

import?time

print???('datetime.max:'?+str(datetime.max?))?

print???('datetime.min:'?+str(datetime.min))??

#datetime.resolution:datetime最小单位;

#print:?datetime.resolution:?0:00:00.000001

print???('datetime.resolution:'?+?str(datetime.resolution?))

#datetime.today():返回一个表示当前本地时间的datetime对象;

#print:?today():?2012-09-12?19:37:50.721000

print???('today():'?+str(datetime.today()?))

#datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;

#print:?now():?2012-09-12?19:37:50.738000

print???('now():'+str(?datetime.now()?))

#datetime.utcnow():返回一个当前utc时间的datetime对象;

#print:?2012-09-12?11:37:50.739000

print???('utcnow():'?+str(datetime.utcnow()?))?

#datetime.fromtimestamp(timestamp[,?tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;

#print:?fromtimestamp(tmstmp):?2012-09-12?19:37:50.741000

print???('fromtimestamp(tmstmp):'?+str(datetime.fromtimestamp(time.time())?))

#datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;

#print:?utcfromtimestamp(tmstmp):?2012-09-12?11:37:50.742000

print???('utcfromtimestamp(tmstmp):'?+str(datetime.utcfromtimestamp(time.time()))?)

#datetime.combine(date,?time):根据date和time,创建一个datetime对象;

#print:?datetime.combine(date,time):??2012-09-12?19:46:05

d?=?date(2012,9,12)

from??datetime??import??*?

t?=?time(19,46,5)

print?('datetime.combine(date,time):?'+str(datetime.combine(d,t)))

#datetime.strptime(date_string,?format):将格式字符串转换为datetime对象;

#print:?2007-03-04?21:08:12

print?(datetime.strptime("2007-03-04?21:08:12",?"%Y-%m-%d?%H:%M:%S"))

#2.?datetime类提供的实例方法与属性

dt?=?datetime.strptime("2012-09-12?21:08:12",?"%Y-%m-%d?%H:%M:%S")

#print:?2012?9?12?21?8?12?0?None

print?(dt.year)

print(dt.month)

print(dt.day)

print(dt.hour)

print(dt.minute)

print(dt.second)

print(dt.microsecond)

print(dt.tzinfo)

print?(dt.date())

print?(dt.time())

print?(dt.replace(year?=?2013))

print?(dt.timetuple())

print?(dt.utctimetuple())

print?(dt.toordinal())

print?(dt.weekday())

print?(dt.isocalendar())

#print?dt.isoformat([sep])

#datetime.?ctime?():返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple()));

#3.?格式字符串

#?datetime.?strftime?(format)

#?%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:??时区名称(如果是本地时间,返回空字符串)

#?%%:??%%?=?%

dt?=?datetime.now()

#print:?(%Y-%m-%d?%H:%M:%S?%f):??2012-09-12?23:04:27?145000

print?('(%Y-%m-%d?%H:%M:%S?%f):?'+?str(dt.strftime('%Y-%m-%d?%H:%M:%S?%f')))

#print:?(%Y-%m-%d?%H:%M:%S?%p):??12-09-12?11:04:27?PM

print?('(%Y-%m-%d?%H:%M:%S?%p):?'+str(dt.strftime('%y-%m-%d?%I:%M:%S?%p')))

#print:?%a:?Wed?

print?('%%a:?%s?'?%?dt.strftime('%a'))

#print:?%A:?Wednesday

print?('%%A:?%s?'?%?dt.strftime('%A'))

#print:?%b:?Sep?

print?('%%b:?%s?'?%?dt.strftime('%b'))

#print:?%B:?September

print?('%%B:?%s?'?%?dt.strftime('%B'))

#print:?日期时间%c:?09/12/12?23:04:27

print?('日期时间%%c:?%s?'?%?dt.strftime('%c'))

#print:?日期%x:09/12/12

print?('日期%%x:%s?'?%?dt.strftime('%x'))

#print:?时间%X:23:04:27

print?('时间%%X:%s?'?%?dt.strftime('%X'))

#print:?今天是这周的第3天

print?('今天是这周的第%s天?'?%?dt.strftime('%w'))

#print:?今天是今年的第256天?

print?('今天是今年的第%s天?'?%?dt.strftime('%j'))

#print:?今周是今年的第37周

print?('今周是今年的第%s周?'?%?dt.strftime('%U'))

上面代码案例运行结果如下:

atetime.max:9999-12-31?23:59:59.999999

datetime.min:0001-01-01?00:00:00

datetime.resolution:0:00:00.000001

today():2014-05-04?15:58:18.141186

now():2014-05-04?15:58:18.193146

utcnow():2014-05-04?07:58:18.243958

fromtimestamp(tmstmp):2014-05-04?15:58:18.291558

utcfromtimestamp(tmstmp):2014-05-04?07:58:18.342550

datetime.combine(date,time):?2012-09-12?19:46:05

2007-03-04?21:08:12

2012

9

12

21

8

12

None

2012-09-12

21:08:12

2013-09-12?21:08:12

time.struct_time(tm_year=2012,?tm_mon=9,?tm_mday=12,?tm_hour=21,?tm_min=8,?tm_sec=12,?tm_wday=2,?tm_yday=256,?tm_isdst=-1)

time.struct_time(tm_year=2012,?tm_mon=9,?tm_mday=12,?tm_hour=21,?tm_min=8,?tm_sec=12,?tm_wday=2,?tm_yday=256,?tm_isdst=0)

734758

2

(2012,?37,?3)

(%Y-%m-%d?%H:%M:%S?%f):?2014-05-04?15:58:19?326295

(%Y-%m-%d?%H:%M:%S?%p):?14-05-04?03:58:19?PM

%a:?Sun?

%A:?Sunday?

%b:?May?

%B:?May?

日期时间%c:?Sun?May??4?15:58:19?2014?

日期%x:05/04/14?

时间%X:15:58:19?

今天是这周的第0天?

今天是今年的第124天?

今周是今年的第18周

python中datetime怎么设置时区

1、默认情况下,pandas中的时间序列是单纯(naive)的时区,其索引的tz字段为None。

2、可以用时区集生成日期范围。

3、从单纯到本地化的转换是通过tz_localize方法处理的。

4、一旦时间序列被本地化到某个特定时区,就可以用tz_convert将其转换到别的时区了。

5、对于上面这种时间序列(它跨越了美国东部时区的夏令时转变期),我们可以将其本地化到EST,再转换为UTC或柏林时间。

(责任编辑:IT教学网)

更多

推荐Frontpage教程文章