python处理时间的标准数据_【python数据分析(15)】Pandas中时间序列处理(1)datetime中年月日数据的提取、时间数据运算以及日期字符串格式标准化转换...

本文详细介绍了Python的datetime模块,包括date类的today()方法获取当前日期,转化为字符串并提取年月日,datetime类的now()方法获取当前时间,通过timedelta进行时间运算,以及日期字符串的parse解析和时间格式化输出。此外,还展示了如何进行日期的加减操作和日期距离的计算。
摘要由CSDN通过智能技术生成

1. datetime库

1.1 datetime.date

1) datetime.date.today() 返回今日,输出的类型为date类

import datetime

today = datetime.date.today()

print(today)

print(type(today))

–> 输出的结果为:

2020-03-04

将输出的结果转化为常见数据类型(字符串)

print(str(today))

print(type(str(today)))

date = str(today).split('-')

year,month,day = date[0],date[1],date[2]

print('今日的年份是{}年,月份是{}月,日子是{}号'.format(year,month,day))

–> 输出的结果为:(转化为字符串之后就可以直接进行操作)

2020-03-04

今日的年份是2020年,月份是03月,日子是04号

2) datetime.date(年,月,日),获取当前的日期

date = datetime.date(2020,2,29)

print(date)

print(type(date))

–> 输出的结果为:

2020-02-29

1.2 datetime.datetime

1) datetime.datetime.now()输出当前时间,datetime类

now = datetime.datetime.now()

print(now)

print(type(now))

–> 输出的结果为:(注意秒后面有个不确定尾数)

2020-03-04 09:02:28.280783

可通过str()转化为字符串(和上面类似)

print(str(now))

print(type(str(now)))

–> 输出的结果为:(这里也可以跟上面的处理类似分别获得相应的数据,但是也可以使用下面更直接的方法来获取)

2020-03-04 09:04:32.271075

2) 通过自带的方法获取年月日,时分秒(这里返回的是int整型数据,注意区别)

now = datetime.datetime.now()

print(now.year,type(now.year))

print(now.month,type(now.month))

print(now.day,type(now.day))

print(now.hour,type(now.hour))

print(now.minute,type(now.minute))

print(now.second,type(now.second))

print(now.date(),type(now.date()))

print(now.date().year,type(now.date().year))

–> 输出的结果为:(首先注意输出中倒数第二个还是上面的datetime.date对象,这里是用来做时间对比的,同时除了这里的datetime.datetime有这种方法,datetime.date对象也有。因为此方法获取second是取的整型数据,自然最后的不确定尾数就被取整处理掉了)

2020

3

4

9

12

55

2020-03-04

2020

★★★1.3 datetime.timedelta

可以发现虽然可以将获得的数据经过处理后进行运算,但是还是有些麻烦,有没有直接在时间对象上面进行操作的方式呢?datetime.timedelta时间戳就是为了解决这个问题的,可以直接进行时间数据的运算处理,避免了数据处理

today = datetime.datetime.today()

yesterday = today - datetime.timedelta(1) #

print(today)

print(yesterday)

print(type(today),type(yesterday))

–> 输出的结果为:(datetime.datetime也有today()方法)

2020-03-04 09:24:25.349485

2020-03-03 09:24:25.349485

如果使用datetime.date进行时间戳的处理会是什么样子的呢?

today = datetime.date.today() # datetime.datetime也有today()方法

yesterday = today - datetime.timedelta(1) #

print(today)

print(yesterday)

print(type(today),type(yesterday))

–> 输出的结果为:(注意最后输出的数据类型和上面的区别)

2020-03-04

2020-03-03

那么直接进行日期的计算,该如何处理呢?这里以datetime.date数据为例(一般需要的就是日期,也不需要精确到秒,如果需要的话就使用datetime.datetime数据)

day = datetime.date(2020,2,29)

distance = today - day

print(distance)

print(distance.days)

print(type(distance))

–> 输出的结果为:(两个datetime.date数据运算,最后得到的是datetime.timedelta数据,注意.days方法的使用,可以直接获取相隔时间)

4 days, 0:00:00

4

1.4 parse日期字符串转换

parse日期字符串解析,直接将str转化成datetime.datetime

from dateutil.parser import parse

date = '12-21-2017'

t = parse(date)

print(t,type(t))

–> 输出的结果为:(需要先导入这个解析包)

2020-02-29 00:00:00

各种日期字符串的解析,如下

print(parse('2000-1-1'),'\n',

parse('5/1/2014'),'\n',

parse('5/1/2014', dayfirst = True),'\n',

parse('22/1/2014'),'\n',

parse('Jan 31, 1997 10:45 PM'))

–> 输出的结果为:(注意第二个输出与第三个输出之间的区别,国际通用格式中,日在月之前,可以通过dayfirst来设置)

2000-01-01 00:00:00

2014-05-01 00:00:00

2014-01-05 00:00:00

2014-01-22 00:00:00

1997-01-31 22:45:00

1.5 时间字段的格式化输出及转换

1) 字符串转datetime格式化输出

time = datetime.datetime.strptime( 'January 01 2020', '%B %d %Y').date()

print(time)

–> 输出的结果为:

datetime.date(2020, 1, 1)

2) datetime数据转字符串输出

today = datetime.datetime.today()

print(today.strftime('%Y/%m/%d'))

–> 输出的结果为:

2020/03/04

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值