时间数据处理最好熟练掌握datetime

datetime模块提供了用于操作日期和时间的类、便捷的格式化输出、有效地提取信息和进行时间相关的计算。
在时间数据的处理方面, datetime基本可以满足我的需求了。下面,总结下datetime模块的常用方法。

一 数据格式(日期、时间、日期时间)

datetime下定义了三个类用来存放时间数据

格式
datetime.date表示日期,datetime.date(year, month, day), 属性分别是年月日
datetime.time表示时间,datetime.time(hour, minute, second,microsecond), 属性分别是小时,分钟,秒,毫秒
datetime.datetime日期+时间, datetime.datetime(year, month, day,hour, minute, second,microsecond)

这三个类本质上没有区别,使用哪一个完全取决于具体业务需要。如果只有日期,使用datetime.date . 如果只有时间,使用datetime.time 。若时间日期都重要,那么使用datetime.datetime . 这就是时间的数据格式,就像list一样,可以用来格式化保存时间数据。

二 时间的获取

1 输入时间

上面三种数据格式都是类嘛,当然可以实例化。

National_Day  = datetime.date(2020,10,1) 
getuptime = datetime.datetime(6,0,0)
2 读取时间

数据库中的数据一般是以标准的数据类型存储,有一整套成熟的处理方法,详见sql处理时间数据 。excel表中的数据格式可能参差不齐,各种格式, 比如:

  • ‘2020年10月1日’
  • ’ Feb 4 2017’
  • ‘2020-10-01’

那么如何将字符串中的时间信息转换为datetime数据格式呢?
需要注意的是excel本身带有日期转换功能, 非常方便,方法是右键设置单元格格式,选择时间或者日期。
datetime提供strptime 函数也可以转化,str表示string, p表示parse分析的意思,也就是输入一个时间字符串和分析模式,返回一个时间对象。 比如:

date1 = '2020年10月1日' # 字符串 
date2  =  'Feb 4 2017' # 字符串
date1 = datetime.datetime.strptime('2020年10月1日' , '%Y年%m月%d日')
date2 = datetime.datetime.strptime('Feb 4 2017' , '%b %d %Y')
print(date1,'\n', date2)
2020-10-01 00:00:00 
 2017-02-04 00:00:00

分析模式就是按照时间的格式化编码。 datetime的格式化编码表

3 获取执行当前语句的系统时间
datetime.datetime.now()  # 完整时间戳
 datetime.datetime(2020, 11, 3, 19, 30, 8, 736315)  
datetime.date.today()   #  日期
datetime.date(2020, 11, 3)

三 时间信息的提取

today = datetime.date.today()
rightnow.year
2020
rightnow.month
11
rightnow.isoweekday()
2
rightnow.day
3
rightnow.hour
19
rightnow.minute
51
rightnow.second
20
rightnow.microsecond
103255
rightnow.isocalendar() # 返回一个元组 (年,第几周, 周几) 
(2020, 45, 2)
rightnow.isoformat('/') #  格式化输出
'2020-11-03/19:51:54.103255'
rightnow.strftime('%Y-%m-%d')  #  格式化输出 
'2020-11-03'

四 时间的计算

timedelta类表示连个不同时间之间的时间差,可以直接对datetime.date, datetime.time和datetime.datetime对象做算术运算,不同的单位之间做四则运算,差值单位也方便控制,构造函数是 datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0), 所以这个差值的单位可以是天、秒、微秒、毫秒、分钟、小时、周。

today = datetime.date.today() 
Mybrithday = datetime.date(2020,12,10) 
How_long_to_birthday = Mybrithday-today 
print(How_long_to_birthday)
>>>datetime.timedelta(days=-24)  # 时间差为timedelta类  
print(How_long_to_birthday.days)
-24
tomorrow = today + datetime.timedelta(1)  
pirnt(tomorrow) 
>>>datetime.date(2020, 11, 4) 

datetime.datetime.now() + datetime.datedelta(seconds=10) # 时间差也可以是秒
>>>datetime.datetime(2020, 11, 3, 20, 27, 12, 506074)

本文仅提供datetime的常用方法, 更详细的介绍参考datetime官方文档

参考:
python3 datetime官方文档 : https://docs.python.org/3/library/datetime.html
菜鸟教程-strptime函数 :https://www.ru oob.com/python/att-time-strptime.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值