前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python的datetime时间、日期处理模块详解

Python的datetime时间、日期处理模块详解

作者头像
程序员洲洲
发布2024-06-07 13:17:31
710
发布2024-06-07 13:17:31
举报
文章被收录于专栏:项目文章项目文章

前言

在跟Python打交道的过程中,经常需要用到日期与时间,如:

  • 作为日志信息的内容输出
  • 计算某个功能的执行时间
  • 用日期命名一个日志文件的名称
  • 记录或展示某文章的发布或修改时间

Python中提供了多个用于对日期和时间进行操作的内置模块:time模块、datetime模块和calendar模块。其中time模块是通过调用C库实现的,所以有些方法在某些平台上可能无法调用,但是其提供的大部分接口与C标准库time.h基本一致。time模块相比,datetime模块提供的接口更直观、易用,功能也更加强大。

本篇文章讲述datetime模块的相关用法与解法。

datetime模块提供了处理日期和时间的类,既有简单的方式,又有复杂的方式。

它虽然支持日期和时间算法,但其实现的重点是为输出格式化和操作提供高效的属性提取功能。

1、datetime模块中定义的类

通过这些类,我们可以搞清楚很多功能其实可以直接调用使用的。

需要注意的是,这些类的对象不可变。 他们之间的关系如下所示:

代码语言:javascript
复制
object
 date
 datetime
 time
 timedelta
 tzinfo
 timezone

2、datetime模块中定义的常量

datetime模块中定义的常量如下:

其对象方法与属性如下:

模板案例代码如下:

代码语言:javascript
复制
>>> import time
>>> from datetime import date
>>>
>>> date.max
datetime.date(9999, 12, 31)
>>> date.min
datetime.date(1, 1, 1)
>>> date.resolution
datetime.timedelta(1)
>>> date.today()
datetime.date(2023, 5, 6)
>>> date.fromtimestamp(time.time())
datetime.date(2023, 5, 6)
>>>
>>> d = date.today()
>>> d.year
2017
>>> d.month
2
>>> d.day
4
>>> d.replace(2016)
datetime.date(2016, 2, 4)
>>> d.replace(2016, 3)
>>> d.replace(2016, 3, 2)
datetime.date(2016, 3, 2)
>>> d.timetuple()
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1)
>>> d.toordinal()
736364
>>> d.weekday()
5
>>> d.isoweekday()
6
>>> d.isocalendar()
(2023, 5, 6)
>>> d.isoformat()
'2023-05-06'
>>> d.ctime()
>>> d.strftime('%Y/%m/%d')
'2023/05/06'

3、datetime.time类

定义如下:

代码语言:javascript
复制
class datetime.time(hour, [minute[, second, [microsecond[, tzinfo]]]])
//其中hour为必须参数,其他为可选参数。各参数的取值范围为:

案例代码如下:

代码语言:javascript
复制
>>> from datetime import time
>>>
>>> time.max
datetime.time(23, 59, 59, 999999)
>>> time.min
datetime.time(0, 0)
>>> time.resolution
datetime.timedelta(0, 0, 1)
>>>
>>> t = time(20, 5, 40, 8888)
>>> t.hour
20
>>> t.minute
5
>>> t.second
40
>>> t.microsecond
8888
>>> t.tzinfo
>>>
>>> t.replace(21)
datetime.time(21, 5, 40, 8888)
>>> t.isoformat()
'20:05:40.008888'
>>> t.strftime('%H%M%S')
'200540'
>>> t.strftime('%H%M%S.%f')
'200540.008888'

4、datetime.datetime类

datetime类的定义

代码语言:javascript
复制
class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

year, month 和 day是必须要传递的参数, tzinfo可以是None或tzinfo子类的实例。

代码语言:javascript
复制
>>> from datetime import datetime, timezone
>>>
>>> datetime.today()
datetime.datetime(2023, 5, 6, 20, 44, 40, 556318)
>>> datetime.now()
datetime.datetime(2023, 5, 6, 20, 44, 56, 572615)
>>> datetime.now(timezone.utc)
datetime.datetime(2023, 5, 6, 12, 45, 22, 881694, tzinfo=datetime.timezone.utc)
>>> datetime.utcnow()
datetime.datetime(2023, 5, 6, 12, 45, 52, 812508)
>>> import time
>>> datetime.fromtimestamp(time.time())
datetime.datetime(2023, 5, 6, 20, 46, 41, 97578)
>>> datetime.utcfromtimestamp(time.time())
datetime.datetime(2023, 5, 6, 12, 46, 56, 989413)
>>> datetime.combine(date(2023, 5, 6), t)
datetime.datetime(22023, 5, 6, 20, 5, 40, 8888)
>>> datetime.strptime('2017/02/04 20:49', '%Y/%m/%d %H:%M')
datetime.datetime(2023, 5, 6, 20, 49)
>>> dt = datetime.now()
>>> dt
datetime.datetime(2023, 5, 6, 20, 57, 0, 621378)
>>> dt.year
2017
>>> dt.month
2
>>> dt.day
4
>>> dt.hour
20
>>> dt.minute
57
>>> dt.second
0
>>> dt.microsecond
621378
>>> dt.tzinfo
>>> dt.timestamp()
1486213020.621378
>>> dt.date()
datetime.date(2023, 5, 6)
>>> dt.time()
datetime.time(20, 57, 0, 621378)
>>> dt.timetz()
datetime.time(20, 57, 0, 621378)
>>> dt.replace()
datetime.datetime(2023, 5, 6, 20, 57, 0, 621378)
>>> dt.replace(2016)
datetime.datetime(2023, 5, 6, 20, 57, 0, 621378)
>>> dt.timetuple()
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=20, tm_min=57, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1)
>>> dt.utctimetuple()
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=20, tm_min=57, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=0)
>>> dt.toordinal()
736364
>>> dt.weekday()
5
>>> dt.isocalendar()
(2017, 5, 6)
>>> dt.isoformat()
'2017-02-04T20:57:00.621378'
>>> dt.isoformat(sep='/')
'2017-02-04/20:57:00.621378'
>>> dt.isoformat(sep=' ')
'2017-02-04 20:57:00.621378'
>>> dt.ctime()
'Sat Feb 4 20:57:00 2017'
>>> dt.strftime('%Y%m%d %H:%M:%S.%f')
'20170204 20:57:00.621378'
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1、datetime模块中定义的类
  • 2、datetime模块中定义的常量
  • 3、datetime.time类
  • 4、datetime.datetime类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档