学习自:

(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. linux中cut命令与tr命令

    目录 一:linux中cut命令 1.cut 命令作用 2.参数 3.参数案例解析: 二:tr命令 1.tr命令作用 2.tr命令格式 3.tr命令参数 4.案例解析: 一:linux中cut命令 1 ...

  2. 配置kubectl连接多个kubernetes集群

    背景:我们通过会有多个k8s集群,例如集群(cn-k8s)和集群(jp-k8s),那个就需要有一台服务器可以同时访问两个集群,方式:将2个集群的config信息存放到一个文件中,通过使用 kubect ...

  3. clickhouse-mysql数据同步

    clickhouse版本:22.1.2.2 1.Mysql引擎(不推荐) CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] EN ...

  4. Android系统编程入门系列之硬件交互——通信硬件Bluetooth

    通信硬件NFC的文章,虽然可以在Android系统中通过非直接接触的形式与支持NFC硬件的设备通信,但是也只能交互一些简短的标签内容,对大量的持续性数据,却并不能很好的支持.因此针对这个弊端,可以考虑 ...

  5. Vue之JavaScript基础(闭包与原型链)

    闭包 定义:能够访问另一个函数作用域的变量的函数. 作用:可以通过闭包,设计私有变量及方法 实例: function outer() { var a = '变量1' var inner = funct ...

  6. 如何在pyqt中实现丝滑滚动字幕

    滚动字幕的视觉效果 网上有很多博客介绍了滚动字幕的实现方法,懂得都懂,大部是 Ctrl C + Ctrl V,效果还很差,最后还是得靠自己.主要思路就是通过定时器定时刷新+绘制两段完整的字符串来达到 ...

  7. file类和fileinfo类的简单对比

    File类:提供用于操作文件的静态方法. FileInfo类:提供操作文件的属性和实例方法. Directory类:提供用于操作目录的静态方法. DirectoryInfo类:提供用于操作目录的实例方 ...

  8. java实现跳过证书校验

    /** * 跳过证书效验的sslcontext * @return * @throws Exception */ private static SSLContext createIgnoreVerif ...

  9. 在view中实现UIViewController的跳转 By H.L

    view中是不能进行UIViewController的push,pop等操作的,若进行跳转操作,一般是用代理,block,通知等实现,那如何实现在ViewController的subView中实现跳转 ...

  10. Java GUI 简单台球游戏模型

    完成效果: 1 package com.neuedu.test; 2 3 import java.awt.Frame; 4 import java.awt.Graphics; 5 import jav ...