首页 > 编程语言 >【python常用模块之time时间模块】---时间模块(time/datetime)

【python常用模块之time时间模块】---时间模块(time/datetime)

时间:2023-12-17 17:12:20浏览次数:50  
标签:24 python 2023 datetime tm 模块 time print

title:  【python常用模块之time时间模块】---时间模块(time/datetime)
date:  2023-12-17  16:54:06 
updated: 2023-12-17 17:00:00
description: 【python常用模块之time时间模块】---时间模块(time/datetime)
cover: 
       https://home.cnblogs.com/u/dream-ze/

【一】时间模块(time/datetime)

【二】表示时间的三种方式

  • 在Python中,通常有这三种方式来表示时间:
    • 时间戳
    • 元组(struct_time)
    • 格式化的时间字符串:
      • 格式化的时间字符串(Format String): ‘1999-12-06’

【三】time

(1)导入时间模块

import time

(2)时间戳(time)

[1]生成时间戳

import time

# 生成时间戳 , 时间戳是浮点数类型
time_str = time.time()
print(time_str, type(time_str))
# 1700832484.27306 <class 'float'>
  • 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
  • 时间戳是使用数字签名技术产生的数据,签名的对象包括了原始文件信息、签名参数、签名时间等信息。
  • 时间戳系统用来产生和管理时间戳,对签名对象进行数字签名产生时间戳,以证明原始文件在签名时间之前已经存在。

[2]时间戳转换为时间元组(UTC时间)

  • 将时间戳转换为UTC时间,与英国伦敦当地时间一致
import time

# 生成时间戳
time_str = time.time()

# 时间戳转换为时间元组类型(UTC时间 --- 英国伦敦当地时间)
print(time.gmtime(time_str))
# time.struct_time(tm_year=2023, tm_mon=11, tm_mday=24, tm_hour=13, tm_min=29, tm_sec=26, tm_wday=4, tm_yday=328, tm_isdst=0)

[3]时间戳转换为时间元组(当地时间)

  • 当地时间。例如我们现在在北京执行这个方法:与UTC时间相差8小时,UTC时间+8小时 = 北京时间
import time

# 生成时间戳
time_str = time.time()

# 时间戳转换为时间元组类型(当地时间)
print(time.localtime(time_str))
# time.struct_time(tm_year=2023, tm_mon=11, tm_mday=24, tm_hour=21, tm_min=30, tm_sec=54, tm_wday=4, tm_yday=328, tm_isdst=0)

(3)时间字符串(strftime)

import time

time_now = time.strftime("%Y-%m-%d %X")
print(time_now)
# 2023-11-24 21:21:17

time_now_new = time.strftime("%Y-%m-%d %H-%M-%S")
print(time_now_new)
# 2023-11-24 21-21-17
  • 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 当前时区的名称
%% %号本身

(4)时间元组(struct_time)

  • localtime将一个时间戳转换为当前时区的struct_time
import time

data_time = time.localtime()

# 查看元组形式的时间
print(data_time)
# time.struct_time(tm_year=2023, tm_mon=6, tm_mday=2, tm_hour=10, tm_min=10, tm_sec=37, tm_wday=4, tm_yday=153, tm_isdst=0)

# 可以通过直接 `.` 取每个值
print(data_time.tm_year)  # 获取到当前年
# 2023

# 可以通过索引取每个单独的值
print(data_time[0]) # 获取到元组索引为0的元素
# 2023
  • struct_time 元组共有9个元素共九个元素:
    • (年,月,日,时,分,秒,一年中第几周,一年中第几天等)
索引(Index) 属性(Attribute) 值(Values)
0 (年) 比如2023
1 tm_mon(月) 1 - 12
2 tm_mday(日) 1 - 31
3 tm_hour(时) 0 - 23
4 tm_min(分) 0 - 59
5 tm_sec(秒) 0 - 60
6 tm_wday(weekday) 0 - 6(0表示周一)
7 tm_yday(一年中的第几天) 1 - 366
8 tm_isdst(是否是夏令时) 默认为0

img

(5)结构化时间

[1]time.mktime(时间戳-->元组时间戳)

import time

print(time.time())  # 1700833503.6196976
time_tuple = time.localtime(time.time())
time_str = time.mktime(time_tuple)
print(time_str)  # 1700833503.0

[2]time.strftime(结构化时间-->时间字符串)

  • 结构化时间参数若不传,则显示当前时间
import time

# 格式化当前时间
time_str = time.strftime("%Y-%m-%d %X")
print(time_str)  # 2023-11-24 21:47:28

print(time.localtime(time.time()))
# time.struct_time(tm_year=2023, tm_mon=11, tm_mday=24, tm_hour=21, tm_min=48, tm_sec=13, tm_wday=4, tm_yday=328, tm_isdst=0)

# 格式化当前时间元组
time_local = time.strftime("%Y-%m-%d", time.localtime(time.time()))
print(time_local)  # 2023-11-24

[3]time.strptime(时间字符串-->时间元组)

import time

time_str = time.strptime("2023-11-24", "%Y-%m-%d")
print(time_str)
# time.struct_time(tm_year=2023, tm_mon=11, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=328, tm_isdst=-1)

time_local = time.strptime("11/24/2023", "%m/%d/%Y")
print(time_local)
# time.struct_time(tm_year=2023, tm_mon=11, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=328, tm_isdst=-1)

[4]time.asctime(结构化时间--> %a %b %d %H:%M:%S %Y串)

  • time.asctime(结构化时间)
    • 如果不传参数,直接返回当前时间的格式化串
import time

time_str = time.asctime(time.localtime(time.time()))
print(time_str)
# Fri Nov 24 21:53:46 2023

time_local = time.asctime()
print(time_local)
# Fri Nov 24 21:53:46 2023
  • time.ctime(时间戳)
    • 时间戳 --> %a %b %d %H:%M:%S %Y串
    • 如果不传参数,直接返回当前时间的格式化串
import time

time_str = time.ctime(time.time())
print(time_str)
# Fri Nov 24 21:55:46 2023

time_local = time.ctime()
print(time_local)
# Fri Nov 24 21:55:46 2023

img

(6)小结

  • 时间戳是计算机能够识别的时间;
  • 时间字符串是人能够看懂的时间;
  • 元组则是用来操作时间的

【四】datetime

(1)导入模块

import datetime

(2)自定义日期并格式化

import datetime

res = datetime.date(2023, 11, 24)
print(res)  # 2023-11-24

(3)获取本地时间

[1]年月日

import datetime

now_date = datetime.date.today()
print(now_date)
# 2023-11-24

[2]年月日时分秒

import datetime

now_time = datetime.datetime.today()
print(now_time)
# 2023-11-24 21:58:59.333879
  • 无论是年月日,还是年月日时分秒对象

  • 都可以调用以下方法获取针对性的数据

    • 以datetime对象举例
    import datetime
    
    # 获取当日的日期
    now_time = datetime.datetime.today()
    print(now_time)
    # 2023-11-24 22:01:31.956273
    
    # 获取年份
    print(now_time.year)
    # 2023
    
    # 获取月份
    print(now_time.month)
    # 11
    
    # 获取日
    print(now_time.day)
    # 24
    
    # 获取星期(weekday星期是0-6) 0表示周一
    print(now_time.weekday())
    # 4
    
    # 获取星期(weekday星期是1-7) 1表示周一
    print(now_time.isoweekday())
    # 5
    

(4)timedelta对象

[1]打印时间增减

import datetime

# 操作时间 : 对时间对象加减
t_day = datetime.timedelta(days=7)
print(t_day)
# 7 days, 0:00:00

t_day = datetime.timedelta(days=6)
print(t_day)
# 6 days, 0:00:00

[2]推迟日期

import datetime

# 获取本地年月日
today = datetime.date.today()
print(today)
# 2023-11-24

# 打印今天的日期
print('今天的日期:{}'.format(today))
# 今天的日期:2023-11-24

# 打印七天后的日期
t_day = datetime.timedelta(days=7)
today = datetime.date.today()
print('从今天向后推7天:{}'.format(t_day + today))
# 从今天向后推7天:2023-12-01

# 打印七天前的日期
t_day = datetime.timedelta(days=7)
today = datetime.date.today()
print('从今天向前推7天:{}'.format(today - t_day))
# 从今天向前推7天:2023-11-17

[3]日期对象与timedelta之间的关系

  • 日期对象 = 日期对象 +/- timedelta对象
  • timedelta对象 = 日期对象 +/- 日期对象
import datetime

day_now = datetime.date.today()
day_to = datetime.timedelta(days=6)

print(day_now)
# 2023-11-24
print(day_to)
# 6 days, 0:00:00

# 日期对象 = 日期对象 +/- timedelta对象
now_date = day_now + day_to
print(now_date)  # 2023-11-30
print(type(now_date))  # <class 'datetime.date'>

# timedelta对象 = 日期对象 +/- 日期对象
lta2 = day_now - now_date
print(lta2)  # -6 days, 0:00:00
print(type(lta2))  # <class 'datetime.timedelta'>
  • 计算生日
import datetime

birthday = datetime.date(2023, 11, 24)
now_date = datetime.date.today()
today = datetime.date.today()
days = birthday - now_date
print('生日:{}'.format(birthday))
print('今天的日期:{}'.format(today))
print('距离生日还有{}天'.format(days))

# 生日:2023-11-24
# 今天的日期:2023-11-24
# 距离生日还有0:00:00天

(5)小结

import datetime

dt_today = datetime.datetime.today()
dt_now = datetime.datetime.now()
dt_utcnow = datetime.datetime.utcnow()  # UTC时间与我们的北京时间cha ju

print(dt_today)
# 2023-11-24 22:15:43.241507
print(dt_now)
# 2023-11-24 22:15:43.241506
print(dt_utcnow)
# 2023-11-24 14:15:43.241506

标签:24,python,2023,datetime,tm,模块,time,print
From: https://www.cnblogs.com/queryH/p/17909354.html

相关文章

  • 【python入门之OS模块介绍】---OS模块介绍
    title:【python入门之OS模块介绍】---OS模块介绍date:2023-12-1615:54:06updated:2023-12-1616:20:00description:【python入门之OS模块介绍】---OS模块介绍cover:https://home.cnblogs.com/u/dream-ze/【一】OS模块的介绍os模块是Python编程语言中......
  • python之tkinter的鼠标样式
    tkinter的Label、Button、Enter等等cursor都可以使用表中特性改变鼠标样式。取值样式备注arrow based_arrow_down based_arrow_up boat bogosity bottom_left_corner bottom_right_corner bottom_side bottom_tee box_spiral center_ptr circle clock coffee_mug cro......
  • 【python扩展之软件开发目录规范】---软件开发目录规范
    title:【python扩展之软件开发目录规范】---软件开发目录规范date:2023-12-1618:54:06updated:2023-12-1619:20:00description:【python扩展之软件开发目录规范】---软件开发目录规范cover: https://blog.csdn.net/DiligentGG/article/details/125784751......
  • hashlib+time模块
    hashlib模块【一】什么是摘要算法Python的hashlib提供了常见的摘要算法如MD5SHA1等等。摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。摘要算法就是通过摘要函数f()对任意长度的数据data计算出......
  • 深度解析Python上下文管理器:优雅资源管理与异常处理
    Python是一种功能强大且灵活的编程语言,它提供了许多高级工具和特性来简化开发过程。其中之一就是上下文管理器,它允许开发者更优雅地处理资源管理和异常处理。本文将深入探讨Python中上下文管理器的工作原理、使用方法以及实际应用。1. 什么是上下文管理器?上下文管理器是一种Python......
  • 【python基础之包介绍】---包
    title:【python基础之包介绍】---包date:2023-12-0618:54:06updated:2023-12-0619:20:00description:【python基础之包】---包cover:https://home.cnblogs.com/u/dream-ze/包【1】什么是包简介包是一个模块的集合,它可以将多个模块的功能组合到一起......
  • K-means聚类思想及其Python实现
    聚类就是将一个庞杂数据集中具有相似特征的数据自动归类到一起,称为一个簇,簇内的对象越相似,聚类的效果越好。“相似”这一概念,是利用距离标准来衡量的,我们通过计算对象与对象之间的距离远近来判断它们是否属于同一类别,即是否是同一个簇。聚类是一种无监督的学习(UnsupervisedLearn......
  • 开启摄像头(python)
    importcv2vc=cv2.VideoCapture(0)fps=20000size=(int(vc.get(cv2.CAP_PROP_FRAME_WIDTH)),int(vc.get(cv2.CAP_PROP_FRAME_HEIGHT)))vw=cv2.VideoWriter('test2-7out.avi',cv2.VideoWriter_fourcc('X',�......
  • Python实现贪吃蛇大作战
    贪吃蛇初始版本初始版本,只存在基本数据结构——双向队列。游戏思路贪吃蛇通过不断得吃食物来增长自身,如果贪吃蛇碰到边界或者自身则游戏失败。食物是绿色矩形来模拟,坐标为随机数生成,定义一个蛇长变量,判断蛇头坐标和食物坐标是否接近,如果蛇头接近食物,蛇长增加一个单位。蛇......
  • Python实现软件设计模式4:建造者模式
    特点建造者模式是一步一步构建一个复杂的对象,属于对象创建型模式将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示关注如何逐步地创建一个复杂的对象或产品,不同的创造者定义了不同的创建过程用户不需要知道内部的具体构造细节、只用指定复杂对象的类......