python中的datetime模块分析

python标准库包含用于日期(date)和时间(time)数据的数据类型,而且还含有日历方面的功能。我们主要会用到datetime、time和calendar模块。datetime.datetime是用得最多的数据类型。

datetime模块中的数据类型

date                以公历形式储存日历日期(年、月、日)

time                将时间储存为时、分、秒、毫秒

datetime        储存日期和时间

timedelta       表示两个datetime值之间的差(日、秒、毫秒)

字符串和datetime之间的相互转换

1、利用strftime()方法(传入一个格式化字符串)将datetime对象转化成字符串

eg:

datetime_now = datetime.datetime.now().strftime('%b-%d-%Y %H:%M:%S')
print datetime_now
#return Feb-26-2018 11:26:19

2、通过strptime()方法可将字符串转化成datetime对象

 
start_dt = "2015.2.19"
end_dt = "2015.3.29"

start = datetime.datetime.strptime(start_dt, '%Y.%m.%d')
end = datetime.datetime.strptime(end_dt, '%Y.%m.%d')
total_days = end - start
print total_days.days
#return 38

每次都要编写时间格式定义很麻烦,尤其是对于那些常见的时间格式,这时我们可以使用第三方库deteutil中的parser.parse方法

from dateutil.parser import parse
dt = parse('2018-2-26')
print dt
#return 2018-02-26 00:00:00

在国际通用的格式中,日通常是放在月的前面的,传入dayfirst=True即可,但亲试了一下不加甚至是dayfirst=False都会输出正常的结果。

dt = parse('26/2/2018',dayfirst=True)
print dt
#return 2018-02-26 00:00:00

在pandas中利用to_datetime方法可以将多种不同的时间格式转化成标准的时间格式,对于多个时间的列表可通过索引获取单个转化后的时间,对于None或者是空字符串等会表示为NaT(Not a Time)

import pandas as pd
datestrs = ['26/2/2018','8/8/2008',None]
dts = pd.to_datetime(datestrs)
dt = pd.to_datetime('2018.2.28')
print dt
print dts
#return 
2018-02-28 00:00:00
DatetimeIndex(['2018-02-26', '2008-08-08','NaT'], dtype='datetime64[ns]', freq=None)

datetime格式定义

    %y 两位数的年份表示(00-99)

    %Y 四位数的年份表示(0000-9999)

    %m 月份(01-12)

    %d 月内中的一天(01-31)

    %H 24小时制小时数(0-23)

    %I 12小时制小时数(01-12)

    %M 分钟数(00-59)

    %S 秒(00-61)(秒60和秒61用于闰秒

 

    %a 本地简化星期名称

    %A 本地完整星期名称

    %b 本地简化的月份名称

    %B 本地完整的月份名称

    %c 本地相应的日期表示和时间表示

    %j 年内的一天(001-366)

    %p 本地A.M.或P.M.的等价符

    %U 一年中的星期数(00-53)星期天为星期的开始

    %W 一年中的星期数(00-53)星期一为星期的开始

    %w 星期(0-6),星期天为星期的开始

    %x 本地相应的日期表示

    %X 本地相应的时间表示

    %Z 当前时区的名称

    %F %Y-%m-%d简写形式,例如2018-02-26

    %D %m/%d/%y简写形式,例如26/02/2018

    %% %号本身


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Superme_No1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值