当前位置:主页 > python教程 > python时间库time、datetime与时间格式转换

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

发布:2023-04-04 11:20:02 59


本站精选了一篇相关的编程文章,网友秦清茹根据主题投稿了本篇教程内容,涉及到python、时间格式转换、python时间库time、python时间库time、datetime与时间格式转换相关内容,已被720网友关注,涉猎到的知识点内容可以在下方电子书获得。

python时间库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 

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) 
# 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) 

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) 
# 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) 

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 

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 
# 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) 

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 

7,time.sleep(nums)

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

import time

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

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 
# /2018/01/01 
# 2018-01-01
# 2019-09-05 
# 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 
# 12::50::12 
# 12:50:12.000010 

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 
# 2018-01-01 12:50:12 
# 2018-01-01T12:50:12.000010 
# 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) 
# 1567739639.0 
# 2019-09-06 11:13:59 
# 2019-09-06 11:13:59 
# 2019-09-06 11:13:59 

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与时间格式转换内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!


参考资料

相关文章

  • 利用在Python中数值模拟研究气体扩散

    发布:2023-04-25

    在 Python 中,可以使用数值模拟来研究气体扩散。本文就来通过一些示例为大家讲讲具体的实现方法,文中的示例代码讲解详细,感兴趣的小伙伴可以学习一下


  • Python办公自动化SFTP详解

    Python办公自动化SFTP详解

    发布:2022-09-12

    为网友们分享了关于Python的教程,这篇文章主要介绍了Python办公自动化SFTP详解,sftp和ftp的区别在安全通道,使用的协议,链接方式,安全性等方面都有不同,更多相关内容需要的小伙伴可以参考一下


  • python ddt数据驱动实例代码分享

    发布:2019-06-18

    在本篇内容里我们给大家分享了关于python ddt数据驱动最简实例代码以及相关知识点,需要的朋友们跟着学习下。


  • Python从Excel读取数据并使用Matplotlib绘制成二维图像

    发布:2023-04-12

    本课程实现使用 Python 从 Excel 读取数据,并使用 Matplotlib 绘制成二维图像。这一过程中,将通过一系列操作来美化图像,最终得到一个可以出版级别的图像。本课程对于需要书写实验报告,学位论文,发表文章,做报告的学员具有较大价值


  • Python脚本的调试和分析实例讲解

    发布:2020-05-05

    ​本篇文章给大家带来的内容是关于Python脚本的调试和分析(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。


  • python字符串内部换行的方法总结

    发布:2019-06-21

    今天小编就为大家分享一篇python中的字符串内部换行方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • Python使用tkinter库实现文本显示用户输入功能代码分享

    发布:2020-07-09

    这篇文章主要介绍了Python使用tkinter库实现文本显示用户输入功能,结合实例形式分析了tkinter库获取用户输入及控件显示相关操作技巧,需要的朋友可以参考下


  • 使用python-pptx操作PPT的示例详解

    发布:2023-03-04

    python对PPT演示文档读写,是通过第三方库python-pptx实现的,python-pptx是用于创建和更新 PowerPoint文件的 Python 库。本文主要介绍了python-pptx操作PPT的相关示例,希望对大家有所帮助


网友讨论