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


Posted in Python onDecember 25, 2020

今天是边复习边创作博客的第三天,我今年大二,我们专业开的有这门课程,因为喜欢所以更加认真学习,本以为没人看呢,看了后台浏览量让我更加认真创作,这篇博客花了2个半小时的时间,结合自己所学,所思,所想写作,目的是为了方便喜欢Python的小白学习,也是一种自我鞭策吧!

python语言使用内置time库和datetime库来处理日期时间

相关术语的解释

  • UTC time Coordinated Universal Time,世界协调时,又称 格林尼治天文时间、世界标准时间。与UTC time对应的是各个时区的local time,东N区的时间比UTC时间早N个小时,因此UTC time + N小时 即为东N区的本地时间;而西N区时间比UTC时间晚N个小时,即 UTC time - N小时 即为西N区的本地时间; 中国在东8区,因此比UTC时间早8小时,可以以UTC+8进行表示。
  • epoch time 表示时间开始的起点;它是一个特定的时间,不同平台上这个时间点的值不太相同,对于Unix而言,epoch time为 1970-01-01 00:00:00 UTC。
  • timestamp(时间戳) 也称为Unix时间 或 POSIX时间;它是一种时间表示方式,表示从格林尼治时间1970年1月1日0时0分0秒开始到现在所经过的毫秒数,其值为float类型。 但是有些编程语言的相关方法返回的是秒数(Python就是这样),这个需要看方法的文档说明。需要说明的是时间戳是个差值,其值与时区无关。

调用库的三种方式:

以time库为例,调用其它库类似

from time import * (*代表time包含所有的时间处理函数,用到某个也可单定义,调用函数时直接使用,比如:clock())
import time  (调用函数方式,比如:time.clock())
import time as t (自定义库的名称,调用时方便,比如:t.clock())

time库的主要的三类函数:

以上面第三种库调用方式举例

1.时间获取:t.time();t.ctime();t.gmtime() #每种获取时间不一样,根据需求使用
2.程序计时:t.clock();t.perf_counter() #使用方式一样
3.时间格式化:t.strftime(format,t);t.strptime(string,format)
#format表示要定义的格式,t表示获取的时间,string表示字符串类型时间
    字符串格式化:%y 两位数的年份表示(00-99)
                  %Y 四位数的年份表示(000-9999)
                  %m 月份(01-12)
                  %d 月内中的一天(0-31)
                  %H 24小时制小时数(0-23)
                  %I 12小时制小时数(01-12)
                  %M 分钟数(00=59)
                  %S 秒(00-59)
 4.程序休眠:t.sleep()

#使用举例
import time as t
t0=t.gmtime()
print(t0)
t1="2020-12-23 19:23:20"
t2 = t.strptime(t1,"%Y-%m-%d %H:%M:%S")
t3 = t.strftime("%y/%m/%d %H:%M:%S")
print(t2)
print(t3)

打印结果:
C:\Users\86185\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/86185/PycharmProjects/untitled/Python复习/hk.py
time.struct_time(tm_year=2020, tm_mon=12, tm_mday=23, tm_hour=12, tm_min=22, tm_sec=39, tm_wday=2, tm_yday=358, tm_isdst=0)
time.struct_time(tm_year=2020, tm_mon=12, tm_mday=23, tm_hour=19, tm_min=23, tm_sec=20, tm_wday=2, tm_yday=358, tm_isdst=-1)
20/12/23  20:22:39

Process finished with exit code 0

time模块主要用于时间访问和转换,这个模块提供了各种与时间相关的函数。

方法/属性 描述
time.altzone 返回与utc时间的时间差,以秒为单位(西区该值为正,东区该值为负)。其表示的是本地DST 时区的偏移量,只有daylight非0时才使用。
time.clock() 返回当前进程所消耗的处理器运行时间秒数(不包括sleep时间),值为小数;该方法Python3.3改成了time.process_time()
time.asctime([t]) 将一个tuple或struct_time形式的时间(可以通过gmtime()和localtime()方法获取)转换为一个24个字符的时间字符串,格式为: "Fri Aug 19 11:14:16 2016"。如果参数t未提供,则取localtime()的返回值作为参数。
time.ctime([secs]) 功能同上,将一个秒数时间戳表示的时间转换为一个表示当前本地时间的字符串。如果参数secs没有提供或值为None,则取time()方法的返回值作为默认值。ctime(secs)等价于asctime(localtime(secs))
time.time() 返回时间戳(自1970-1-1 0:00:00 至今所经历的秒数)
time.localtime([secs]) 返回以指定时间戳对应的本地时间的 struct_time对象(可以通过下标,也可以通过 .属性名 的方式来引用内部属性)格式
time.localtime(time.time() + n*3600) 返回n个小时后本地时间的 struct_time对象格式(可以用来实现类似crontab的功能)
time.gmtime([secs]) 返回指定时间戳对应的utc时间的 struct_time对象格式(与当前本地时间差8个小时)
time.gmtime(time.time() + n*3600) 返回n个小时后utc时间的 struct_time对象(可以通过 .属性名 的方式来引用内部属性)格式
time.strptime(time_str, time_format_str) 将时间字符串转换为struct_time时间对象,如:time.strptime('2017-01-13 17:07', '%Y-%m-%d %H:%M')
time.mktime(struct_time_instance) 将struct_time对象实例转换成时间戳
time.strftime(time_format_str[, struct_time_instance]) 将struct_time对象实例转换成字符串,如果struct_time_instance不指定则取当前本地时间对应的time_struct对象

datetime库主要的四类函数:

datetime库是基于time库进行了封装;以import datetime as dt 为datetime库调用方式

1.date:表示的是日期对象 #dt.date
2.time;表示的是时间对象 #dt.time ;一般不用date和time函数,datetime函数包含其功能
3.datetime:表示的是日期时间对象#dt.datetime.now()表示获取当前时间;dt.strftime(format) # 按照 format 进行格式化输出
4.timedelta:主要用于定义计算时间跨度 #t=dt.timedelat(hours=10)表示定义时间跨度是10小时

用分隔符'''分类展示如下:

import datetime as dt
now = dt.datetime.now() # 获取当前datetime
print(now)
输出结果:2019-05-07 16:28:07.198690
'''
d = dt.date(2020, 12, 23)
print(d)
print('year:', d.year)
print('month:', d.month)
print('day:', d.day)
输出结果:
2020-12-23
year: 2020
month: 12
day: 23
'''
'''
date1=dt.date(2020,12,23)
timedel=dt.timedelta(days=4)#表示时间跨度为4天
print('四天后的日期是:', date1+timedel)
输出结果:四天后的日期是:2020-12-27
'''

最后配上一段小程序:文本进度条打印程序分析

import time
scale = 100 #这个可以随意设置,看需求
print("执行开始".center(scale//2,'-'))# .center(a,'b')函数是居中符,这条程序是将“执行开始”居中占字符为scale//2(可看需求自定义),b为填充符
starttime = time.clock() #time库内置函数,第一次使用是开始计时
for i in range(scale+1):
  a = '*' * i  #将'*'字符随i的增加而增加
  b = '.' * (scale - i) #将'.'字符随‘*'增加而减少,两个字符总数是scale的初始值数量
  c = (i/scale) * 100 #求百分比
  t = time.clock()-starttime #计算时间,第二次调用time.clock函数表示计时结束
  print("\r{:^3.0f}%[{}->{}]{:.2}s".format(c,a,b,t),end="")#字符格式化,看需求,自己玩就是咋好看咋格式化
  time.sleep(0.05) #time.sleep()函数表示让程序休眠,里面参数是休眠时间根据需求随意定义
print("\n"+"执行结束".center(scale//2,'-'))#同上;"\n表示换行打印";"+"连接符,具有连接功能

关于datetime模块的datetime类会在下面做详细讲解,这里简单说下time.struct_time。

time.struct_time包含如下属性:

下标/索引 属性名称 描述
0 tm_year 年份,如 2017
1 tm_mon 月份,取值范围为[1, 12]
2 tm_mday 一个月中的第几天,取值范围为[1-31]
3 tm_hour 小时, 取值范围为[0-23]
4 tm_min 分钟,取值范围为[0, 59]
5 tm_sec 秒,取值范围为[0, 61]
6 tm_wday 一个星期中的第几天,取值范围为[0-6],0表示星期一
7 tm_yday 一年中的第几天,取值范围为[1, 366]
8 tm_isdst 是否为夏令时,可取值为:0 , 1 或 -1

属性值的获取方式有两种:

  • 可以把它当做一种特殊的有序不可变序列通过 下标/索引 获取各个元素的值,如t[0]
  • 也可以通过 .属性名 的方式来获取各个元素的值,如t.tm_year。

需要说明的是struct_time实例的各个属性都是只读的,不可修改。

到此这篇关于python语言time库和datetime库基本使用详解的文章就介绍到这了,更多相关python time库和datetime库内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现Linux下守护进程的编写方法
Aug 22 Python
初步介绍Python中的pydoc模块和distutils模块
Apr 13 Python
Python NumPy库安装使用笔记
May 18 Python
使用Python绘制图表大全总结
Feb 11 Python
AI人工智能 Python实现人机对话
Nov 13 Python
python批量修改文件编码格式的方法
May 31 Python
78行Python代码实现现微信撤回消息功能
Jul 26 Python
python查询文件夹下excel的sheet名代码实例
Apr 02 Python
python tkinter控件布局项目实例
Nov 04 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
Jan 10 Python
OpenCV读取与写入图片的实现
Oct 13 Python
python安装sklearn模块的方法详解
Nov 28 Python
Alpine安装Python3依赖出现的问题及解决方法
Dec 25 #Python
用python对excel进行操作(读,写,修改)
Dec 25 #Python
python Pexpect模块的使用
Dec 25 #Python
Python中读取文件名中的数字的实例详解
Dec 25 #Python
Python的logging模块基本用法
Dec 24 #Python
python 通过exifread读取照片信息
Dec 24 #Python
python 如何上传包到pypi
Dec 24 #Python
You might like
PHP递归遍历指定文件夹内的文件实现方法
2016/11/15 PHP
phpStorm2020 注册码
2020/09/17 PHP
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
js常用代码段整理
2011/11/30 Javascript
JavaScript实现自己的DOM选择器原理及代码
2013/03/04 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
2013/05/28 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
JavaScript中用let语句声明作用域的用法讲解
2016/05/20 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
python实现的解析crontab配置文件代码
2014/06/30 Python
Python的多态性实例分析
2015/07/07 Python
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
Python OpenCV 使用滑动条来调整函数参数的方法
2019/07/08 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
Python Gitlab Api 使用方法
2019/08/28 Python
PYTHON如何读取和写入EXCEL里面的数据
2019/10/28 Python
python迭代器常见用法实例分析
2019/11/22 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
班级标语大全
2014/06/21 职场文书
财务会计专业自荐书
2014/06/30 职场文书
教师个人教学反思
2016/02/23 职场文书
手把手教你用SpringBoot将文件打包成zip存放或导出
2021/06/11 Java/Android
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android