• Python时间模块(datetime)


    datetime相较于原生的time模块功能要丰富得多。主要二级对象为:

    datetime常用模块
    类名说明
    date日期对象,年月日
    time时间对象,时分秒
    datetime日期时间对象,完整的时间,年月日时分秒
    timedelta时间差

    一、date对象

    1.创建date对象

    (1)通过指定年月日

    1. a = datetime.date(2022, 11, 1)
    2. print(a)
    3. # 输出:
    4. 2022-11-01

    (2)直接获取当天

    1. print(datetime.date.today())
    2. # 输出:
    3. 2022-11-01

    (3)通过已有date对象创建

    这个方法还是比较有用的,在数据处理时经常需要对时间进行替换操作。比如替换年份,月和日不变。

    1. a = datetime.date(2022, 11, 1)
    2. b = a.replace(2018)
    3. print(b)
    4. # 输出:
    5. 2018-11-01

    (4)通过时间戳

    1. a = datetime.date.fromtimestamp(time.time())
    2. print(a)
    3. # 输出:
    4. 2022-11-01

    2.一些常用的方法和属性

    (1)获取对象的年、月、日

    这里实际上提供了一种输出指定格式时间字符串的方法。

    1. a = datetime.date(2022, 11, 1)
    2. print('{}/{}/{}'.format(a.year, a.month, a.day))
    3. # 输出:
    4. 2022/11/1

    (2)比较日期大小

    1. a = datetime.date(2022, 11, 1)
    2. b = a.replace(2018)
    3. print(a > b)
    4. # 输出:
    5. True

    (3)两个日期对象相减获得时间差

    返回的实际上就是一个datetime.timedelta对象,该对象将在最后一部分总结。

    1. a = datetime.date(2022, 11, 1)
    2. b = a.replace(2018)
    3. delta = a - b
    4. print(delta.days)
    5. # 输出:
    6. 1461

    (4)返回struct_time

    这个在time模块有总结,链接Python 时间相关(time模块)_Jiangugu的博客-CSDN博客

    1. a = datetime.date(2022, 11, 1)
    2. print(a.timetuple())
    3. # 输出:
    4. time.struct_time(tm_year=2022, tm_mon=11, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=305, tm_isdst=-1)

    二、datetime对象

    1.创建方法

    和date对象一样,datetime同样支持指定年月日时分秒、通过时间戳和替换已有datetime参数来创建。

    1. a = datetime.datetime(2022, 11, 1, 17, 30, 00)
    2. b = datetime.datetime.fromtimestamp(time.time())
    3. c = a.replace(2018)
    4. d = datetime.datetime.now()
    5. print(a, b, c, d)
    6. # 输出:
    7. 2022-11-01 17:30:00 2022-11-01 18:32:50.243000 2018-11-01 17:30:00 2022-11-01 18:32:50.243000

     比较特殊的方法是将date和time对象结合进而生成datetime对象

    1. t = datetime.time(17, 30, 0)
    2. dt = datetime.date(2022, 11, 1)
    3. dtt = datetime.datetime.combine(dt, t)
    4. print(dtt)
    5. # 输出:
    6. 2022-11-01 17:30:00

    2.常用方法和属性

    (1)返回日期或时间

    datetime实际上是融合了date和time(因此,time类不再单独总结),因而datetime可以将两者拆开返回。

    1. a = datetime.datetime(2022, 11, 1, 17, 30, 00)
    2. print("日期部分:{},时间部分:{}".format(a.date(), a.time()))
    3. # 输出:
    4. 日期部分:2022-11-01,时间部分:17:30:00

    (2)返回世界统一协调时间

    1. d = datetime.datetime.now()
    2. print(d.utcnow())
    3. # 输出:
    4. 2022-11-01 10:48:51.028600

    三、timedelta对象

    1.可以通过两个datetime或date相减得到

    1. a = datetime.datetime(2022, 11, 1, 17, 30, 00)
    2. b = datetime.datetime.now()
    3. time_delta = b - a
    4. print('现在距离下班已有{}分钟'.format(time_delta.seconds/60))
    5. # 输出:
    6. 现在距离下班已有89.21666666666667分钟

    2.可以直接构造

    1. time_delta = datetime.timedelta(days=0, seconds=5400)
    2. print('现在距离下班已有{}分钟'.format(time_delta.seconds/60))
    3. # 输出:
    4. 现在距离下班已有90.0分钟

    3.使用timedelta计算据当前时间指定间隔的时间点

    1. b = datetime.date(2022, 3, 15)
    2. time_delta = datetime.timedelta(days=30)
    3. a = b - time_delta
    4. print('2022年3月15的前30天是:', a)
    5. # 输出:
    6. 2022315的前30天是: 2022-02-13

    四、与字符串的互相转换

    1.字符串转时间

    1. a = datetime.datetime.strptime('2022/11/1', '%Y/%m/%d')
    2. print(a)
    3. # 输出:
    4. 2022-11-01 00:00:00

    2.时间转字符串

    实际上,上面已经提到一种灵活的方式。因为我们既然已经获取了年月日时分秒的具体数值,怎么构造字符串还不是随心所欲。这里提供一个datetime自带的方法。

    1. b = datetime.datetime.now()
    2. a = datetime.datetime.strftime(b, '%Y/%m/%d')
    3. print(a)
    4. # 输出:
    5. 2022/11/01

  • 相关阅读:
    [机缘参悟-66]:怎样才能让别人愿意帮你:利益共享法则、“大道”、“人性”
    Clang AST 学习(四):使用libclang (C Routine) 操作 AST
    【autodesk】浏览器中渲染rvt模型
    springboot(ssm 企业员工薪酬关系系统 Java(code&LW)
    elasticSearch 接口实现查询热词统计
    【Node.js】时钟案例---将一个网页分别拆分成css、html和js文件
    深度学习之神经网络是如何自行学习的?
    H5\CSS\JS 盒子拖动mousedown、mousemove、mouseup、pageX、pageY、offsetLeft、offsetTop
    Vue中事件修饰符与键盘事件
    前端面试题集锦(4)
  • 原文地址:https://blog.csdn.net/qq_45055172/article/details/127636553