python常用时间库time、datetime与时间格式之间的转换教程

目录
  • 一,python中储存时间的三种格式
    • 1,时间元组(结构体时间)
    • 2,时间戳
    • 3,格式化时间
  • 二、time库
    • 1,time.time()
    • 2,time.localtime([ sec ])
    • 3,time gmtime([ sec ])
    • 4,time.strftime(format[, t])
    • 5,time.strptime(string[, format])
    • 6,time mktime(t)
    • 7,time.sleep(nums)
    • 8,timeit.Timer.timeit([number])
  • 三,datetime库
    • 1,datetime.date类
    • 2,datetime.time类
    • 3,datetime.datetime类
    • 4,datetime.timedelta类
  • 四,time模块和datetime模块之间的相互转换
  • 五,附录
  • 总结

本文将对python中多个时间储存方式、时间模块(如time、datetime、timeit)以及他们之间的转换关系进行详细的梳理和总结。整体梳理后表示图如下:

一,python中储存时间的三种格式

1,时间元组(结构体时间)

共有九个元素组

2,时间戳

时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量

3,格式化时间

已格式化的结构使时间更具可读性。包括自定义格式和固定格式。

二、time库

1,time.time()

创建时间戳
返回当前时间的时间戳(1970纪元后经过的浮点秒数)。

import time

# 返回当前时间的时间戳(1970纪元后经过的浮点秒数)。
temp = time.time()
print(temp,type(temp))
# -----out------
# 1567667448.120967 <class 'float'>

2,time.localtime([ sec ])

创建结构体时间 | 将时间戳转换为结构体时间(本地)
格式化时间戳为本地的时间,返回结构体时间。若sec参数未输入,则以当前时间为转换。

import time

# 1,localtime中加入时间戳参数
temp = time.time()
# localtime输入时间戳参数,将时间戳转化为本地时间
locaoltime = time.localtime(temp)
print(locaoltime,type(locaoltime))

time.sleep(3)

# 2,localtime未输入参数时,默认为当时时间
print(time.localtime(),type(time.localtime()))
# -----out------
# time.struct_time(tm_year=2019, tm_mon=9, tm_mday=5, tm_hour=15, tm_min=44, tm_sec=4, tm_wday=3, tm_yday=248, tm_isdst=0) <class 'time.struct_time'>
# time.struct_time(tm_year=2019, tm_mon=9, tm_mday=5, tm_hour=15, tm_min=44, tm_sec=7, tm_wday=3, tm_yday=248, tm_isdst=0) <class 'time.struct_time'>

3,time gmtime([ sec ])

将时间戳转换为结构体时间(0时区)
将一个时间戳转换为UTC时区(0时区)的struct_time,可选的参数sec表示从1970-1-1以来的秒数。其默认值为time.time(),函数返回time.struct_time类型的对象。(struct_time是在time模块中定义的表示时间的对象)。

import time
temp = time.time()

# localtime输入时间戳参数,将时间戳转化为本地时间
print(time.localtime(temp),type(time.localtime(temp)))

# gmtimee输入时间戳参数,将时间戳转换为UTC时区
print(time.gmtime(temp),type(time.gmtime(temp)))
# -----out------
# time.struct_time(tm_year=2019, tm_mon=9, tm_mday=5, tm_hour=17, tm_min=8, tm_sec=57, tm_wday=3, tm_yday=248, tm_isdst=0) <class 'time.struct_time'>
# time.struct_time(tm_year=2019, tm_mon=9, tm_mday=5, tm_hour=9, tm_min=8, tm_sec=57, tm_wday=3, tm_yday=248, tm_isdst=0) <class 'time.struct_time'>

4,time.strftime(format[, t])

将结构体时间转换为字符串
输入结构体时间,输出为按照输入的格式的字符串

import time

# 输入结构体时间,输出为按照输入的格式的字符串
temps = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(temps,type(temps))
# -----out------
# 2019-09-05 17:12:34 <class 'str'>

5,time.strptime(string[, format])

将字符串转换为结构体时间
根据指定的格式把一个时间字符串解析为结构体时间。

import time

# 输入结构体时间,输出为按照输入的格式的字符串
temps = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(temps,type(temps))
strs = temps

# 输入字符串,按照参数指定格式,输出结构体时间
temps = time.strptime( strs,"%Y-%m-%d %H:%M:%S")
print(temps,type(temps))
# -----out------
# 2019-09-05 16:20:58 <class 'str'>
# time.struct_time(tm_year=2019, tm_mon=9, tm_mday=5, tm_hour=16, tm_min=20, tm_sec=58, tm_wday=3, tm_yday=248, tm_isdst=-1) <class 'time.struct_time'>

6,time mktime(t)

将结构体时间转换为时间戳 接收struct_time对象作为参数,返回用秒数来表示时间的浮点数。
如果输入的值不是一个合法的时间,将触发 OverflowError 或 ValueError。

import time

# 输入结构体时间,返回时间戳
time_temps = time.mktime(time.localtime())
print(time_temps,type(time_temps))
# -----out------
# 1567672723.0 <class 'float'>

7,time.sleep(nums)

推迟执行的秒数,没有任何输出

import time

# 推迟执行的秒数,没有任何输出
temp = time.sleep(3)
print(temp,type(temp))
# -----out------
# None <class 'NoneType'>

8,timeit.Timer.timeit([number])

用来计算一个函数平均执行了多少时间

# coding=gbk
import timeit

def T1():
    '''表内置属性'''
    li = []
    for i in range(1000):
        li.append(i)

def T2():
    '''列表拼接'''
    li = []
    for i in range(1000):
        li = li + [i]

def T3():
    '''列表推导式'''
    li = [i for i in range(1000)]

def T4():
    '''属性转换'''
    li = list(range(1000))

if __name__ == "__main__":
    test_list = ['T1()','T2()','T3()','T4()']
    for i in test_list:
        timer = timeit.Timer(i,"from __main__ import T1,T2,T3,T4")
        print("%s: %f seconds" % (i,timer.timeit(number=1000)))

三,datetime库

datetime模块包含如下类

1,datetime.date类

表示日期的类,常用的属性有year、month、day。参数都为整数。

import datetime
import time

# 1,以下为两种生成日期的方式,效果一致,返回datetime类型
someday = datetime.date(year=2018, month=1, day=1)
someday = datetime.date(2018, 1, 1)
print(someday,type(someday))

# 2,以规定的格式返回日期,返回字符串类型
temp = someday.strftime('/%Y/%m/%d')
print(temp,type(someday))

# 3,以默认的格式返回日期
print(someday.isoformat())

# 4,获得今天日期,返回datetime类型
temp = datetime.date.today()
print(temp,type(temp))

# 5,根据给定的时间戮,返回一个date对象
temp = datetime.date.fromtimestamp(time.time())
print(temp)
# -----out------
# 2018-01-01 <class 'datetime.date'>
# /2018/01/01 <class 'datetime.date'>
# 2018-01-01
# 2019-09-05 <class 'datetime.date'>
# 2019-09-05

2,datetime.time类

表示时间的类,参数包括hour、minute、second、microsecond。 time类的方法同datetime类。

import datetime
import time

# 1,以下为两种生成时间的方式,效果一致,返回datetime类型
someday = datetime.time(hour=12,minute=50,second=12,microsecond=10)
someday = datetime.time(12, 50, 12, 10)
print(someday,type(someday))

# 2,以规定的格式返回时间,返回字符串类型
temp = someday.strftime('%H::%M::%S')
print(temp,type(temp))
#
# 3,以默认的格式返回时间
print(someday.isoformat(),type(someday))
# -----out------
# 12:50:12.000010 <class 'datetime.time'>
# 12::50::12 <class 'str'>
# 12:50:12.000010 <class 'datetime.time'>

3,datetime.datetime类

日期实践类,常用的参数包含year、month、day、hour、minute、second、microsecond。但是至少要包含year、month、day三个参数。

import datetime
import time
# 1,以下为两种生成日期时间的方式,效果一致,返回datetime类型
someday = datetime.datetime(year=2018,month=1,day=1,hour=12,minute=50,second=12,microsecond=10)
someday = datetime.datetime(2018, 1, 1, 12, 50, 12, 10)
print(someday,type(someday))

# 2,以规定的格式返回日期时间,返回字符串类型
temp = someday.strftime('%Y-%m-%d %H:%M:%S')
print(temp,type(temp))

# 3,以默认的格式返回日期时间
print(someday.isoformat(),type(someday))

# 4,datetime类.timetuple()将datetime转化为结构体时间;再通过time.mktime()装换为时间戳
dtime = datetime.datetime.now()
print(dtime.timetuple(),type(dtime.timetuple()))
un_time = time.mktime(dtime.timetuple())
print(un_time,type(un_time))

# 5,时间戳转换为python的datetime
times = datetime.datetime.fromtimestamp(un_time)
print(times,type(times))

# 6,将datetime类转换为格式化时间,datetime类.strftime(format).
now_time = datetime.datetime.now()
now_time = now_time.strftime('%Y-%m-%d %H:%M:%S')
print(now_time,type(now_time))

# 7,将格式化时间转换为datetime类,datetime.datetime.strptime(string,format)
d2 = datetime.datetime.strptime(now_time, '%Y-%m-%d %H:%M:%S')
print(d2,type(d2))
# -----out------
# 2018-01-01 12:50:12.000010 <class 'datetime.datetime'>
# 2018-01-01 12:50:12 <class 'str'>
# 2018-01-01T12:50:12.000010 <class 'datetime.datetime'>
# time.struct_time(tm_year=2019, tm_mon=9, tm_mday=6, tm_hour=11, tm_min=13, tm_sec=59, tm_wday=4, tm_yday=249, tm_isdst=-1) <class 'time.struct_time'>
# 1567739639.0 <class 'float'>
# 2019-09-06 11:13:59 <class 'datetime.datetime'>
# 2019-09-06 11:13:59 <class 'str'>
# 2019-09-06 11:13:59 <class 'datetime.datetime'>

4,datetime.timedelta类

表示时间间隔类,给一个时间点加上此类,即可得到一个新的时间。参数包含days、hours、minutes、seconds、microseconds。

import datetime

# 以下为1天零1小时零1分零1秒又10毫秒的时间间隔
datetime.timedelta(days=1,hours=1,minutes=1,seconds=1,microseconds=10)
datetime.timedelta(1, 3661, 10)

# 以下为35天间隔
datetime.timedelta(days=35)
datetime.timedelta(35)

# 1,当前时间和日期
print(datetime.datetime.now())

# 2,根据指定日期、相隔时间计算出对应目标时间
temp= datetime.datetime.now()-datetime.timedelta(days=67)
print(temp)
print(datetime.datetime.now()-datetime.timedelta(hours=10,days=1))
# -----out------
# 2019-09-05 20:05:30.396688
# 2019-06-30 20:05:30.396688
# 2019-09-04 10:05:30.396688

四,time模块和datetime模块之间的相互转换

# coding=utf-8
import time
import datetime

def get_time():
    # 获取当前datetime类型时间
    now_time = datetime.datetime.now()
    # 当前时间减去一天 获得昨天当前时间
    yes_time = now_time + datetime.timedelta(days=-1)
    # 格式化输出
    yes_time_str = yes_time.strftime('%Y-%m-%d %H:%M:%S')
    print (yes_time_str)  # 2017-11-01 22:56:02

def dif_time():
    # 使用datetime类型计算两个时间之间差值
    now_time = datetime.datetime.now()
    now_time = now_time.strftime('%Y-%m-%d %H:%M:%S')
    d1 = datetime.datetime.strptime('2017-10-16 19:21:22', '%Y-%m-%d %H:%M:%S')
    d2 = datetime.datetime.strptime(now_time, '%Y-%m-%d %H:%M:%S')
    #间隔天数
    day = (d2 - d1).days
    #间隔秒数
    second = (d2 - d1).seconds
    print (day)   #17
    print (second)  #13475  注意这样计算出的秒数只有小时之后的计算额 也就是不包含天之间差数

def unix_time():
    #将python的datetime转换为unix时间戳
    dtime = datetime.datetime.now()
    un_time = time.mktime(dtime.timetuple())
    print (un_time)
    #将unix时间戳转换为python的datetime
    unix_ts = 1509636585.0
    times = datetime.datetime.fromtimestamp(unix_ts)
    print (times)  #2017-11-02 23:29:45

if __name__ == "__main__":
    get_time()
    dif_time()

五,附录

总结

到此这篇关于python常用时间库time、datetime与时间格式之间转换的文章就介绍到这了,更多相关python时间库time、datetime与时间格式转换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python实现发送带有pdf附件的电子邮件

    目录 前言 一.如何使用Python发送电子邮件 二.使用步骤 总结 前言 使用Python发邮件,是个简单的话题,可是如何可以优雅的轻松的群发邮件,并附加PDF附件,是很多小伙伴的日常工作,却也是很多小白需要费力才能解决的问题.为了方便理解和使用,本文对邮件发送进行了类的包装.将连接服务器.生成邮件.发送邮件分开执行.可以解决工作中遇到的绝大部分问题. 话不多说,上代码. 提示:以下是本篇文章正文内容,邮箱配置参数需要自行修改方可使用 一.如何使用Python发送电子邮件 使用Python发送

  • Python创建一个自定义视频播放器的实现

    这个例子使用VLC作为视频播放器,并且使用tkinter创建了一个简单的GUI界面,其中包括一个Canvas用于播放视频,几个按钮用于控制视频播放,以及一个滑动条用于控制音量.你可以根据自己的需求修改GUI界面的布局和功能. 1.安装vlc的64位版本. https://vlc.letterboxdelivery.org/vlc/3.0.18/win64/vlc-3.0.18-win64.exe 2.安装python的vlc模块. pip install vlc 3.编写如下代码,包含了播放,暂

  • python在windows调用svn-pysvn的实现

    作为EBS开发人员,开发工具用的多,部署代码类型多,管理程序麻烦,操作繁琐,一直是我最讨厌的事情.部署一次程序要使用好几个工具,改来改去,上传下载,实在难受. 扣了一下python,打算做一款集成工具,把代码管理.程序部署一步搞下来.中间有几个技术难点需要打通: 1. ERP调用linux的ssh执行shell获得源代码,下载到本机 2. 将源代码结构化存储并放到svn下,上传svn同步版本 3. 调用Jenkins执行部署,将源代码部署到正式环境 4. 该操作步骤做记录留底 现在测试的就是py

  • python批量翻译excel表格中的英文

    目录 需求背景 主要设计 分析 具体实现 表格操作 请求百度翻译api 多线程 控制台显示进度 完整源码 需求背景 女朋友的论文需要爬取YouTube视频热评,但爬下来的都是外文. 主要设计 读取一个表格文件,获取需要翻译的文本 使用百度翻译 API 进行翻译,获取翻译结果 将翻译结果保存到原表格中,然后提取需要的列组成一个新的 DataFrame 处理多个表格文件,将它们的翻译结果分别保存 使用线程池加速翻译过程,可以同时翻译多个表格 显示进度条 分析 目标文件为xlsx格式,可以借助pand

  • ChatGPT教你用Python实现BinarySearchTree详解

    目录 前言 ChatGPT 截图 对 ChatGPT 的一些感悟 1.ChatGPT 成为下一代搜索引擎,毋庸置疑 2.上下文关联能力强 3.未来的可能性 前言 至今,ChatGPT 已经火了很多轮,我在第一轮的时候注册了账号,遗憾的是,没有彻头彻尾好好地体验过一次.最近这一次火爆,ChatGPT 确实出圈了,各行各业的人们都在晒,趁着周末,我也小试了一把. 这篇文会介绍我使用 ChatGPT 的过程以及使用时的一些感悟,最后浅谈下我对 ChatGPT 的一些理解,不喜勿喷哈~ 我的问题是:我是

  • python常用时间库time、datetime与时间格式之间的转换教程

    目录 一,python中储存时间的三种格式 1,时间元组(结构体时间) 2,时间戳 3,格式化时间 二.time库 1,time.time() 2,time.localtime([ sec ]) 3,time gmtime([ sec ]) 4,time.strftime(format[, t]) 5,time.strptime(string[, format]) 6,time mktime(t) 7,time.sleep(nums) 8,timeit.Timer.timeit([number]

  • 详解Python常用标准库之时间模块time和datetime

    目录 time时间模块 time -- 获取本地时间戳 localtime -- 获取本地时间元组(UTC) gmtime -- 获取时间元组(GMT) mktime -- 时间元组获取时间戳 ctime -- 获取时间字符串 asctime -- 时间元组获取时间字符串 strftime -- 格式化时间 strptime -- 格式化时间 sleep -- 时间睡眠 perf_counter -- 时间计时 模拟进度条 程序计时 时间转换示意图 datetime时间模块 date类 time

  • python语言time库和datetime库基本使用详解

    今天是边复习边创作博客的第三天,我今年大二,我们专业开的有这门课程,因为喜欢所以更加认真学习,本以为没人看呢,看了后台浏览量让我更加认真创作,这篇博客花了2个半小时的时间,结合自己所学,所思,所想写作,目的是为了方便喜欢Python的小白学习,也是一种自我鞭策吧! python语言使用内置time库和datetime库来处理日期时间 相关术语的解释 UTC time Coordinated Universal Time,世界协调时,又称 格林尼治天文时间.世界标准时间.与UTC time对应的是

  • 详解Python常用标准库之os模块与shutil模块

    目录 系统模块 常用方法 常用属性 文件操作 路径模块 文件复制移动模块(文件操作) copyfileobj -- 复制文件(内容) copyfile -- 复制文件(内容) copymode -- 复制文件(权限) copystat -- 复制文件(除了内容) copy & copy2 -- 复制文件 copytree -- 迭代复制文件夹中的所有 rmtree -- 迭代删除文件夹(即使文件夹中有文件) move -- 移动文件或文件夹 系统模块 import os 系统模块用于对系统进行操

  • Python常用标准库之os模块功能

    目录 系统相关 文件和目录操作 执行命令 模块导入方式: import os os模块是Python标准库中的一个用于访问操作系统相关功能的模块,os模块提供了一种可移植的使用操作系统功能的方法.使用os模块中提供的接口,可以实现跨平台访问.但是,并不是所有的os模块中的接口在全平台都通用,有些接口的实现是依赖特定平台的,比如linux相关的文件权限管理和进程管理. os模块的主要功能:系统相关.目录及文件操作.执行命令和管理进程 Ps:其中的进程管理功能主要是Linux相关的,此处不做讨论.

  • python常用request库与lxml库操作方法整理总结

    目录 requests 库最常见的操作 请求参数以及请求方法 响应对象的属性与方法 属性 property 方法 会话对象 SSL 证书验证,客户端证书,CA 证书 代理 Cookie lxml 库 lxml.etree XPath lxml 其他说明 requests 库最常见的操作 请求参数以及请求方法 导入 requests 库之后,基本都在围绕 requests.get 做文章,这里重点要回顾的是 get 方法的参数,其中包含如下内容,下述内容在官方手册没有呈现清单,通过最新版源码分析.

  • Python常用标准库详解(pickle序列化和JSON序列化)

    目录 常用的标准库 序列化模块 序列化和反序列化 使用场景 dumps & loads dump & load JSON序列化模块 使用场景 支持的数据类型 JSON和pickle的区别 序列化函数 json和pickle实际使用过程中的一些问题 pickle和json的区别总结 常用的标准库 序列化模块 import pickle 序列化和反序列化 把不能直接存储的数据变得可存储,这个过程叫做序列化.把文件中的数据拿出来,回复称原来的数据类型,这个过程叫做反序列化. 在文件中存储的数据只

  • Python使用pydub库对mp3与wav格式进行互转的方法

    我们需要用到一个叫pydub的类库, pydub是python的高级一个音频处理库,可以让你以一种不那么蠢的方法处理音频.---开发者原话 https://github.com/jiaaro/pydub 附上开发者的github地址 安装: pip install pydub 如果在pycharm中也可以这样安装: setting----Project Interpreter----右边绿色+号 点一下install package 依赖安装: 作者在github 上说,依赖可以安装libav

  • 利用Python和OpenCV库将URL转换为OpenCV格式的方法

    今天的博客是直接来源于我自己的个人工具函数库. 过去几个月,有些PyImageSearch读者电邮问我:"如何获取URL指向的图片并将其转换成OpenCV格式(不用将其写入磁盘再读回)".这篇文章我将展示一下怎么实现这个功能. 额外的,我们也会看到如何利用scikit-image从URL下载一幅图像.当然前行之路也会有一个常见的错误,它可能让你跌个跟头. 继续往下阅读,学习如何利用利用Python和OpenCV将URL转换为图像 方法1:OpenCV.NumPy.urllib 第一个方

  • C#中DateTime的时间加减法操作小结

    在C#语言中,DateTime是用来表示时间的类,在C#的DateTime时间类中,提供了好像时间对象加减法操作,可用于某一个时间对象加减 多少年.加减多少个月.加减多少天.加减多少小时.加减多少分钟.加减多少秒等操作,此文将总结C#的DateTime类中的时间加减操作运算. (1)加减多少年操作:AddYears方法,具体参考C#使用AddYears方法获取当前时间20年后的时刻. C#使用AddYears方法获取当前时间20年后的时刻 2019-08-10 10:01 在C#语言中,Date

随机推荐