学习自:

(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. jdbc连接mysql数据库注意事项

    1.导入mysql驱动  http://blog.csdn.net/a153375250/article/details/50851049 2.开放机器访问权限 mysql>GRANT ALL ...

  2. JavaScript之详述闭包导致的内存泄露

    一.内存泄露 1. 定义:一块被分配的内存既不能使用,也不能回收.从而影响性能,甚至导致程序崩溃. 2. 起因:JavaScript的垃圾自动回收机制会按一定的策略找出那些不再继续使用的变量,释放其占 ...

  3. 信奥题库(OI题库)8月月赛T1题解 幂次数

    0.前置知识 分解质因数 快速幂(不必要) 1.思路 首先,我们知道一个正整数(设它为 \(a\) )一定能分解成这样的形式: \[a= \prod_{i\in N^*} p_i^{c_i} \] 其 ...

  4. Java 继承02

    向上类型转换 父类型的引用指向子类型的实例. Person p = new Person();Animal a = p; //子类对象赋值给父类类型的变量 注意: 向上转型后,子类单独定义的方法会丢失 ...

  5. el表达式中的${param}用法

    el表达式中的${param}? 1. 2. ${param.name} 等价于 request.getParamter("name"),这两种方法一般用于服务器从页面或者客户端获 ...

  6. freeswitch对接电信线路VOLTE视频通话

    在public.xml上设置视频编码: <action application="export" data="nolocal:absolute_codec_stri ...

  7. ApacheCN Kali Linux 译文集 20211020 更新

    Kali Linux 秘籍 中文版 第一章 安装和启动Kali 第二章 定制 Kali Linux 第三章 高级测试环境 第四章 信息收集 第五章 漏洞评估 第六章 漏洞利用 第七章 权限提升 第八章 ...

  8. HTC组件介绍及应用 HTML

    转载请注明来源:https://www.cnblogs.com/hookjc/ HTML组件封装了HTML内容,并可以插入到别的HTML文档中.在HTML组件出现以前,在HMTL文档中使用自定义控制唯 ...

  9. 鸟哥的Linux学习笔记-bash

    1. /bin/bash是linux预设的shell,也是Linux发行版的标准shell,它兼容sh,可以看作是sh的功能加强. 2. bash具有命令记录功能,在bash中通过上下键就可以翻找之前 ...

  10. MySQL高级(进阶)SQL语句

    MySQL高级(进阶)SQL语句 目录 MySQL高级(进阶)SQL语句 一.实例准备--制表 1. 表1(商店区域表) 2. 表2(商店销售表) 3. 表3(城市表) 4. 表4(total_sal ...