学习自:

(10条消息) Python的time和datetime的简单使用_慢行的蜗牛-CSDN博客

Python之 time 与 datetime模块 - 叶灵溪&叶仙樱 - 博客园

python time模块和datetime模块详解 - 苍松 - 博客园

datetime官方文档

Python 日期和时间 | 菜鸟教程

Python中有两个模块:time与datetime,分别是时间与日期。

time

三种时间表示方法

time模块用于时间操作,包括:

  • 时间表达;
  • 获取系统时间、时间的格式化输出;
  • 精确计时;

time模块中有3种时间表示方法:

  • timestamp:时间戳;基于1970.1.1 00:00:00的偏移值。浮点数;
  • struct_time类型:gmtime()和localtime()可以将timestamp显示为struct_time()类型;
  • 格式化时间:strftime()函数可以把struct_time()时间格式化显示。

struct_time

struct_time类型也叫结构化时间,struct_time是一个tuple,其中一共9个元素:(年,月,日,时,分,秒,第几周,第几天,夏令时),这九个元素都是int类型。

格式为:

#访问时可以通过 t[ tm_xxx ]的形式访问每一项
tm_year
tm_mon
tm_mday
tm_hour
tm_min
tm_sec
tm_wday
tm_yday
tm_isdst

我们用一段程序来说明上述三种时间:

import time

print(time.time()) #时间戳,float类型
print(time.strftime("%Y-%m-%d %X"))#格式化时间,string类型
print(time.localtime())#本地时区的struct_time
print(time.gmtime())#UTC时区的struct_time
1622900361.6924574
2021-06-05 21:39:21
time.struct_time(tm_year=2021, tm_mon=6, tm_mday=5, tm_hour=21, tm_min=39, tm_sec=21, tm_wday=5, tm_yday=156, tm_isdst=0)
time.struct_time(tm_year=2021, tm_mon=6, tm_mday=5, tm_hour=13, tm_min=39, tm_sec=21, tm_wday=5, tm_yday=156, tm_isdst=0)

格式化时间

格式化方式见下一段的第二部分的两个函数,这里要说明格式化的写法:

%y 两位数的年份表示 (00-99)
%Y 四位数的年份表示 (0000-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 本地时间,13:22:44这种形式
%Z 当前时区名称
%% 转义%

三种时间的关系

  • timestamp:计算机认识的时间
  • struct_time:程序员处理的时间
  • 格式化时间:人类能看懂的时间

time模块的三类函数

1、时间获取:time()、ctime()、gmtime()

  • time.time():当前时间戳;浮点型
  • time.ctime():获取当前时间,并以易读的形式表示;String
  • time.gmtime():计算机可处理格式,即上文提到的struct_time类型

2、时间格式化:strftime()、strptime()

  • time.strftime( format  [ , struct_time ] ):根据参数把一个struct_time或tuple转换为字符串;如果没有第二个参数,则默认返回当前时间
  • time.strptime( string [ , format ] ):与strftime相反,把字符串转换为struct_time并返回;这里的format缺省时为 "%a %b %H:%M:%S %Y"——周几 月 时:分:秒 年

3、程序计时:sleep()、perf_counter()

  • time.perf_counter():返回一个CPU级别的精准时间计时数,单位为秒;计数值不确定,连续调用取差值才有意义
  • time.sleep( s ):休眠s秒

三种时间的转化

import time

print(time.time())

#timestamp -> struct_time
#localtime():将一个时间戳转换为本地的struct_time,参数缺省时默认转化当前时间
#gmtime(time_stamp):与localtime类似,不过是UTC时间下的struct_timeprint(time.time())
print(time.localtime())
print(time.localtime(1622906297.021401)) #struct_time -> timestamp
#mktime( struct_time )
print(time.localtime()) #struct_time -> format string
#strftime(format [,t]) 若t未指定,默认用time.localtime()
lt = time.localtime()
print(lt)
str_time = time.strftime("%Y-%m-%d %X")
print(str_time) #format string -> struct_time
#strptime(str_time , format)
#若format缺省,默认是"%a %b %d %H:%M:%S %Y"
st = time.strptime(str_time,"%Y-%m-%d %X")
print(st)

虽然Timestamp和任意格式化时间字符串间不存在转化方式,但是却存在向某一特定格式时间字符串的转化函数,这个特定格式就是“%a %b %d %H %M %S %Y”——“星期几 月 日 时 分 秒 年”,即我们在上文所说的strptime函数的默认格式

import time
#asctime( [struct_time] ):将一个表示时间的tuple或者struct_time表示为指定格式的时间字符串
#如果参数缺省,则默认用time.localtime()
str = time.asctime()#Sat Jun 5 23:48:44 2021 #cstime( [timestamp] ):把一个timestamp转化为指定格式的时间
#缺省时,将使用time.time()作为参数
str = time.ctime(time.time())#Sat Jun 5 23:48:44 2021

DateTime

datetime是Python中常用的时间模块,主要是输出格式化时间和提取属性的功能。

datetime中的类

datetime.date 日期,常用属性有:year、month、day
datetime.time 时间,常用属性有:hour、minute、second、microsecond
datetime.datetime 日期时间
datetime.timedelta 两个date、time、datetime间的时间间隔,单位可达μs
datetime.tzinfo 时区相关信息对象的抽象基类。它由datetime和time类使用,以提供自定义时间调账
datetime.timezone 实现tzinfo的类,表示与UTC的固定偏移量

datetime.datetime

  • datetime.datetime.now():返回系统的当前时期
  • datetime.datetime.now().date():返回当前日期
  • datetime.datetime.now().time():返回当前时间
  • datetime.datetime.ctime(datetime/date/time):将date、time、datetime转化为str类型
  • datetime.datetime.now().strftime('%Y-%m-%d %H:%M%S'):跟ctime类似,datetime中的各种类型转化为字符串
  • datetime.datetime.strptime( str , format ):将str转化为指定格式的datetime类型

格式化方式与time类似,只是多了一个%f表示微秒。

datetime.timedelta

该类用于表示两个不同时间之间的差值。如果使用time模块对时间进行算数运算,只能将格式化str和struct_time先转换为timestamp,然后对该timestamp加减n秒,最后再转换为struct_time或格式化str,这显然很不方便。而datetime.timedelta类可以让我们方便地对date、time、datetime对象做算术运算,而且两个时间之间的差值也更容易控制。

使用方法datetime.timedelta()添加参数,可以计算任意时间前的datetime:

import datetime

timeapp = datetime.datetime.now().date()
delta = datetime.timedelta(days=300)#计算300天前的时期 print(type(timeapp))
print(timeapp)
print(timeapp - delta)
<class 'datetime.date'>
2021-06-06
2020-08-10

timedelta()也接受多个参数,比如300d12h前的时间:

timeapp = datetime.datetime.now()
delta = datetime.timedelta(days=300,hours=12)
print(timeapp)
print(timeapp - delta)
2021-06-06 09:53:41.894628
2020-08-09 21:53:41.894628

计算间隔的总天数和秒数:

import datetime

dlt=datetime.timedelta(days=1,hours=2)
day_dlt=dlt.days
second_delta=dlt.total_seconds() print(day_dlt)
print(second_delta) 1
93600.0

Python:time与datetime的更多相关文章

  1. JavaScript 解析 Django Python 生成的 datetime 数据 时区问题解决

    JavaScript 解析 Django/Python 生成的 datetime 数据 当Web后台使用Django时,后台生成的时间数据类型就是Python类型的. 项目需要将几个时间存储到数据库中 ...

  2. python 中date datetime time 与str的互转

    以下全部引入 form datetime import datetime, timedelta import time 一.time 转str 二.datetime 转 str str_date = ...

  3. Python处理时间 time && datetime 模块

    Python处理时间 time  &&  datetime 模块 个人整理,获取时间方式: import datetime import time #获取当前时间:Thu Nov 03 ...

  4. python之模块datetime详解

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块datetime详解 import datetime #data=datetime.dat ...

  5. python之模块datetime 常见操作

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块datetime #http://blog.sina.com.cn/s/blog_6c37 ...

  6. Python时间模块datetime用法

    时间模块datetime是python内置模块,datetime是Python处理日期和时间的标准库. 1,导入时间模块 from datetime import datetime 2,实例 from ...

  7. python模块time&datetime&json & picle&14.logging等

    本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...

  8. python time、datetime、random、os、sys模块

    一.模块1.定义模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test)包:用来从逻辑上组织 ...

  9. Python模块 - time,datetime,calendar

    time模块 localtime 当前时间的struct_time形式 >>> time.localtime() time.struct_time(tm_year=2015, tm_ ...

  10. python基础 ---time,datetime,collections)--时间模块&collections 模块

    python中的time和datetime模块是时间方面的模块 time模块中时间表现的格式主要有三种: 1.timestamp:时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算 ...

随机推荐

  1. 【程序18】求s=a+aa+aaa+aaaa+aa...a的值

    求s=a+aa+aaa+aaaa+aa-a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制. 知识点:在Python 3里,reduce( ...

  2. How to check in Windows if you are using UEFI

    You might be wondering if Windows is using UEFI or the legacy BIOS, it's easy to check. Just fire up ...

  3. python06day

    Now代码1005行 回顾 字典的初识 查询速度快,{'name':'tangdaren'},存储大量关联型数据 键:int.str(bool tuple不常用)不可变的数据类型 值:任意数据类型 3 ...

  4. django之百度Ueditor富文本编辑器后台集成

    Python3 + Django2.0 百度Ueditor 富文本编辑器的集成 百度富文本编辑器官网地址:http://fex.baidu.com/ueditor/ 疑问:为什么要二次集成? 答案:因 ...

  5. Java线程池实现原理及其在美团业务中的实践(转)

    转自美团技术团队:https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html 随着计算机行业的飞速发展,摩尔定律逐 ...

  6. 理解java线程的中断(interrupt)

    一个线程在未正常结束之前, 被强制终止是很危险的事情. 因为它可能带来完全预料不到的严重后果比如会带着自己所持有的锁而永远的休眠,迟迟不归还锁等. 所以你看到Thread.suspend, Threa ...

  7. linnux命令 - brctl和ifconfig

    1.安装brctl centos7.6安装使用 yum install bridge-utils ubuntu使用 apt-get install bridge-utils 什么是网桥 网桥是一种在链 ...

  8. Java高级特性——反射

    感谢原文作者:peter_RD_nj 原文链接:https://www.jianshu.com/p/9be58ee20dee 注意:同一个类在JVM中只存在一份字节码对象 概述 定义 JAVA反射机制 ...

  9. MySQL之视图篇

    MySQL之视图篇 文章目录 MySQL之视图篇 1. 概述 1.1 为什么使用视图? 1.2 视图的理解 2. 创建视图 2.1 创建单表视图 2.2 针对于多表 2.3 基于视图创建视图 3. 查 ...

  10. Solution -「洛谷 P5827」点双连通图计数

    \(\mathcal{Description}\)   link.   求有 \(n\) 个结点的点双连通图的个数,对 \(998244353\) 取模.   \(n\le10^5\). \(\mat ...