今天是边复习边创作博客的第三天,我今年大二,我们专业开的有这门课程,因为喜欢所以更加认真学习,本以为没人看呢,看了后台浏览量让我更加认真创作,这篇博客花了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库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

time库是python中处理时间的标准库_python语言time库和datetime库基本使用详解相关推荐

  1. 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解

    第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一.    引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...

  2. python中包含的标准数据类型_Python数据类型基础

    1. Python标准数据类型 Python3 中有六个 标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Dictionary(字 ...

  3. Python中的yield关键字及表达式、生成器、生成器迭代器、生成器表达式详解

    文章目录 1. yield关键字及表达式.生成器.生成器迭代器.生成器表达式 1.1 yield关键字及表达式(yield expression) 1.1.1 yield关键字 1.1.2 yield ...

  4. python列表和元组的应用_python学习笔记之列表(list)与元组(tuple)详解

    前言 最近重新再看python的基础知识,感觉自己还是对于这些知识很陌生,需要用的时候还是需要翻书查阅,还是先注重基础吧--我要重新把python的教程阅读一遍,把以前自己忽略的部分学习,加强练习和记 ...

  5. python二维图颜色函数_Python绘图之二维图与三维图详解

    各位工程师累了吗? 推荐一篇可以让你技术能力达到出神入化的网站"持久男" 1.二维绘图 a. 一维数据集 用 Numpy ndarray 作为数据传入 ply 1. import ...

  6. python创建空字典什么意思_Python创建空列表的字典2种方法详解

    如果要在 Python 中创建键值是空列表的字典,有多种方法,但是各种方法之间是否由区别?需要作实验验证,并且分析产生的原因.本文针对两种方法做了实验和分析. 如果要在 Python 中创建一个键值都 ...

  7. python cv2 轮廓的包络 面积_Python 基于FIR实现Hilbert滤波器求信号包络详解

    在通信领域,可以通过希尔伯特变换求解解析信号,进而求解窄带信号的包络. 实现希尔伯特变换有两种方法,一种是对信号做FFT,单后只保留单边频谱,在做IFFT,我们称之为频域方法:另一种是基于FIR根据传 ...

  8. python中rest是什么意思_Python语言之RESTframework简介

    本文主要向大家介绍了Python语言之RESTframework简介,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 什么是RESTful? RESTful是一种开发理念,REST ...

  9. python 绘制图表生成svg文件_python用Pygal如何生成漂亮的SVG图像详解

    前言 SVG可以算是目前最最火热的图像文件格式了,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形.它是基于XML(Extensible Markup Langu ...

最新文章

  1. 混合app用百分比还是rem_一次搞懂前端所有CSS长度单位,px、em、rem、rpx、%....
  2. ASP.NET前台JS与后台CS函数如何互相调用
  3. apk ionic 破损_cordova – ionic build android不生成任何.apk文件或错误
  4. Android 使用Adapter适配器模式实现无线轮播BannerView
  5. [MongoDB] MongoDB的基本操作以及文档的增删改查
  6. Raspberry Pi(树莓派)试用小记
  7. ajax获取nodejs的值,jquery - NodeJS如何获取服务器中的数据,通过POST从jquery ajax调用发送 - 堆栈内存溢出...
  8. servlet三种方式实现servlet接口
  9. 2 VUE.js 内部指令
  10. 现代通信原理4.2:随机过程
  11. ifonts下载ttf字体文件
  12. [转载]AdapterView.OnItemClickListener
  13. python写入文件出现空行
  14. 如何批量将 Xlsx 格式的 Excel 文档转为 Xls 格式
  15. c++ double 截取_C/C++ double取余函数
  16. 2022年10月29日(星期六)骑行海囗林场森林公园
  17. exmail邮件被退回
  18. MySql使用存储过程开发
  19. RTX2080Ti和RTX2080 Super 那个好
  20. mysql使用union顺序混乱

热门文章

  1. 【Windows部署】首次安装的谷歌Chrome浏览器出现【无法打开此页面】问题处理(详细图文步骤)
  2. GitHub轻松阅读微服务实战项目流程详解【第三天:公共模块的设计与实现】
  3. Idea使用技巧总结(未完待续)
  4. Spring Session——@EnableSpringHttpSession注解
  5. 浅谈主流内存发展历史
  6. CG CTF MISC 图种
  7. C++ scanf()函数安全性问题
  8. CG CTF WEB 密码重置
  9. 零宽断言java_正则表达之零宽断言(零宽度正预测先行断言)
  10. 日志 查看匹配内容的前后几行