我是靠谱客的博主 纯情大树,最近开发中收集的这篇文章主要介绍Python的时间、日期和日历操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Python的时间、日期和日历操作

Python 提供了内置的 time 、 datetime和 calendar模块可以用于时间、日期和日历操作。

内置的time模块提供了各种与时间相关的函数。time --- 时间的访问和转换 — Python 3.10.6 文档

内置的datetime 模块提供用于处理日期和时间的类。datetime --- 基本日期和时间类型 — Python 3.10.6 文档

内置的calendar 模块提供了日历相关函数。datetime --- 基本日期和时间类型 — Python 3.10.6 文档

上面给出的官方文档链接内容不太好理解,可以先略过,先看下文,回头当资料查看。

处理日期和时间主要有以下场景

获取当前的日期和时间

格式化日期和时间

计算两个时间的差值

time模块用法

import time  # 引入time模块

time.time() #会返回 从 1970年1月1日0点(所谓的epoch时间点) 到 当前时间的 经过的秒数 ,可以简称为秒数时间,也称为时间戳

time.localtime()  # 以struc_time元组的形式返回当前时间

struc_time元组包含了9个元素,每个元素的含义如下

tm_year, 表示年份,四位数

tm_mon, 表示月份,1到12之间的一个数字

tm_mday,表示每月的第几天,1到31之间的一个数字

tm_hour, 表示小时,0到23之间的一个数字

tm_min, 表示分钟数,0到59之间的一个数字

tm_sec, 表示秒数,0到61之间第一个数字

tm_wday,表示星期,0到6之间的一个数字,0表示星期一,依次类推

tm_yaday,表示一年中的第几日,1到366之家的一个数字

tm_isdst, 是否为夏令时,1表示是,0表示否,-1表示未知

我们可以使用 time 模块的 strftime 方法来格式化日期,strftime()方法语法:

time.strftime(format[, t])

参数

format -- 格式符号串。

t -- 可选的参数t是一个struct_time对象。

返回以可读字符串表示的当地时间。

python中时间日期格式化符号:

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

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

%m 月份(01-12)

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

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

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

%M 分钟数(00=59)

%S 秒(00-59)

%a 本地简化星期名称

%A 本地完整星期名称

%b 本地简化的月份名称

%B 本地完整的月份名称

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

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

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

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

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

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

%x 本地相应的日期表示

%X 本地相应的时间表示

%Z 当前时区的名称

%% %号本身

下面给出一个示例

import time
t = time.localtime() #以struc_time元组的形式返回当前时间
print(t) #
print("----")
print(time.strftime("%b %d %Y %H:%M:%S", t)) #格式化日期

运行之:

下面计算两个时间相差多少秒的源码: 

import time
a ="2022-07-22 23:00:00"
b ="2021-07-21 22:10:00"
t1 = time.strptime(a, "%Y-%m-%d %H:%M:%S")
t2 = time.strptime(b, "%Y-%m-%d %H:%M:%S")
t3 = (time.mktime(t1)-time.mktime(t2))
print(str(t3))

运行之:

开发程序时,经常需要获取两个代码位置在执行时的时间差,比如,我们想知道某个函数执行大概耗费了多少时间,就可以使用time.time()来做。

import time

before = time.time()

#这里放测试程序段或调用的函数

after = time.time()

print(f"花费时间{after-before}")

下面给出一个实际例子——查看递归法求阶乘耗费时间——源码如下:

import time
#递归法求阶乘
def factorial(n):
    result = n
    for i in range(1,n):
        result *= i
    return result

n=int(input("请输入一个整数:"))
before = time.time()
#这里放测试程序段或调用的函数
print(str(n) + "!=" + str(factorial(n)))
after = time.time()
print(f"花费时间{after-before}")

运行之:

datetime模块用法

datetime是日期和时间处理的基本模块,当然也支持获取当前日期和格式化,其更独特的功能是进行时间的运算,如计算两个日期之间差了几天。

import datetime  # 引入datetime模块

datetime.date.today()  # 获取当前日期

datetime.date.today().year  # 获取年份

下面计算两个日期的间隔源码如下:

import datetime

# 计算两个日期的间隔
time_format = '%Y-%m-%d %H:%M:%S'
d1 = datetime.datetime.strptime('2022-07-22 23:00:00', time_format)
d2 = datetime.datetime.strptime('2021-07-21 22:10:00', time_format)
DD = d1 - d2
print(DD) #两个日期的间隔
print(DD.days) #两个日期的间隔天数
print(DD.seconds) #仅时间差中的间隔秒数【注】
print(DD.total_seconds()) #两个日期相隔的秒数

【注】seconds属性获得的秒只是时间差中的小时、分钟和秒部分的和,并没有包含时间差的天数(既是两个时间点不是同一天,失效)。请注意seconds 属性和total_seconds()函数的区别。

属性           值

days           获取相差天数,不包括前面的天数和秒后面的小数

seconds        获取时间差中的秒数,,不包括前面的天数和秒后面的小数

microseconds   秒小数点后面的差值

运行之:

calendar模块的用法

该模块用于处理日历信息,内置了月份和星期的列表,可以当做一个常量来使用。

import calendar  #引入日历模块

print(calendar.calendar(2022))  #显示指定年份的日历

print(calendar.month(2022,8))  # 显示指定年月的日历

下面给出完整的生成指定日期的日历源码:

import calendar  #引入日历模块

yy = int(input("输入年份: ")) # 输入指定年
mm = int(input("输入月份: ")) # 输入指定月

print(calendar.month(yy,mm))  # 显示日历

运行之:

上面我们返回的日历大是英文的。对中文语境不友好。下面给出改进,实现把calendar的日历转换成中文的。

法一,源码如下:

import calendar
c = calendar.LocaleTextCalendar(locale="zh_CN")
c.prmonth(2021, 4)

运行之:

不太整齐。

法二、源码如下:

import calendar

def showmonth(year, month):
    res = calendar.monthrange(year, month)
    days = res[1]  # 当前月份的天数
    w = res[0]  # 当前月份第一天是星期几
    print(f"    {year}年{month}月的日历信息")
    print(" 一  二  三  四  五  六  日 ")
    print("---------------------------")
    d = 1
    print("    " * w, end="")
    while d <= days:
        print(' {:0>2d} '.format(d), end="")
        if (d + w) % 7 == 0:
            print("n", end="")
        d += 1
    print("n---------------------------")

showmonth(2022,8) # 调用

运行之:

OK!

最后

以上就是纯情大树为你收集整理的Python的时间、日期和日历操作的全部内容,希望文章能够帮你解决Python的时间、日期和日历操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部