首页 > 编程语言 >Python标准库分享之时间与日期 (time, datetime包)

Python标准库分享之时间与日期 (time, datetime包)

时间:2023-09-28 22:32:11浏览次数:48  
标签:clock Python datetime 时间 time print next

Python具有良好的时间和日期管理功能。实际上,计算机只会维护一个挂钟时间(wall clock time),这个时间是从某个固定时间起点到现在的时间间隔。时间起点的选择与计算机相关,但一台计算机的话,这一时间起点是固定的。其它的日期信息都是从这一时间计算得到的。此外,计算机还可以测量CPU实际上运行的时间,也就是处理器时间(processor clock time),以测量计算机性能。当CPU处于闲置状态时,处理器时间会暂停。


time包

time包基于C语言的库函数(library functions)。Python的解释器通常是用C编写的,Python的一些函数也会直接调用C语言的库函数。

import time
print(time.time())   # wall clock time, unit: second
print(time.clock())  # processor clock time, unit: second

time.sleep()可以将程序置于休眠状态,直到某时间间隔之后再唤醒程序,让程序继续运行。

import time
print('start')
time.sleep(10)     # sleep for 10 seconds
print('wake up')

当我们需要定时地查看程序运行状态时,就可以利用该方法。

time包还定义了struct_time对象。该对象实际上是将挂钟时间转换为年、月、日、时、分、秒……等日期信息,存储在该对象的各个属性中(tm_year, tm_mon, tm_mday...)。下面方法可以将挂钟时间转换为struct_time对象:

st = time.gmtime()      # 返回struct_time格式的UTC时间
st = time.localtime()   # 返回struct_time格式的当地时间, 当地时区根据系统环境决定。

s  = time.mktime(st)    # 将struct_time格式转换成wall clock time

datetime包


1) 简介

datetime包是基于time包的一个高级包, 为我们提供了多一层的便利。

datetime可以理解为date和time两个组成部分。date是指年月日构成的日期(相当于日历),time是指时分秒微秒构成的一天24小时中的具体时间(相当于手表)。你可以将这两个分开管理(datetime.date类,datetime.time类),也可以将两者合在一起(datetime.datetime类)。由于其构造大同小异,我们将只介绍datetime.datetime类。

比如说我现在看到的时间,是2012年9月3日21时30分,我们可以用如下方式表达:

import datetime
t = datetime.datetime(2012,9,3,21,30)
print(t)

所返回的t有如下属性:

hour, minute, second, microsecond

year, month, day, weekday   # weekday表示周几

2) 运算

datetime包还定义了时间间隔对象(timedelta)。一个时间点(datetime)加上一个时间间隔(timedelta)可以得到一个新的时间点

(datetime)。比如今天的上午3点加上5个小时得到今天的上午8点。同理,两个时间点相减会得到一个时间间隔。

import datetime
t      = datetime.datetime(2012,9,3,21,30)
t_next = datetime.datetime(2012,9,5,23,30)
delta1 = datetime.timedelta(seconds = 600)
delta2 = datetime.timedelta(weeks = 3)
print(t + delta1)
print(t + delta2)

print(t_next - t)

在给datetime.timedelta传递参数(如上的seconds和weeks)的时候,还可以是days, hours, milliseconds, microseconds。

两个datetime对象还可以进行比较。比如使用上面的t和t_next:

print(t > t_next)

3) datetime对象与字符串转换

假如我们有一个的字符串,我们如何将它转换成为datetime对象呢?

一个方法是用上一讲的正则表达式来搜索字符串。但时间信息实际上有很明显的特征,我们可以用格式化读取的方式读取时间信息。

from datetime import datetime
format = "output-%Y-%m-%d-%H%M%S.txt" 
str    = "output-1997-12-23-030000.txt" 
t      = datetime.strptime(str, format)

strptime, p = parsing

我们通过format来告知Python我们的str字符串中包含的日期的格式。在format中,%Y表示年所出现的位置, %m表示月份所出现的位置……。

反过来,我们也可以调用datetime对象的strftime()方法,来将datetime对象转换为特定格式的字符串。比如上面所定义的t_next,

print(t_next.strftime(format))

strftime, f = formatting

具体的格式写法可参阅官方文档。 如果是Linux系统,也可查阅date命令的手册($man date),两者相通。

Python标准库分享之时间与日期 (time, datetime包)_字符串

标签:clock,Python,datetime,时间,time,print,next
From: https://blog.51cto.com/u_15974582/7643635

相关文章

  • 结对项目:用Python实现自动生成小学四则运算题目的程序
    Python实现四则运算程序软件工程计科21级1.2班作业要求https://edu.cnblogs.com/campus/gdgy/CSGrade21-12/homework/13016作业目标完成结对项目:四则运算;熟悉团队协作的方法和模式github链接:https://github.com/howdnb/howdnb项目成员信息姓名学号......
  • python中实现按照固定位数拆分字符串
     001、[root@pc1test2]#lstest.py[root@pc1test2]#cattest.py##测试程序#!/usr/bin/envpython3#-*-coding:utf-8-*-importrestr1="abcdefghijklmn"print(str1)list1=re.findall(".{3}",str1)##按照每3位生成列表print(&qu......
  • Python 中的字符串基础与应用
    在Python中,字符串可以用单引号或双引号括起来。'hello'与"hello"是相同的。您可以使用print()函数显示字符串文字:示例:print("Hello")print('Hello')将字符串分配给变量是通过变量名后跟等号和字符串完成的:示例a="Hello"print(a)多行字符串您可以使用三个引号将多......
  • python重命名 文件
    在Python中,可以使用os模块的rename()函数来重命名文件。以下是一个基本的示例:importos#原文件的路径old_file_path='/path/to/your/old_file_name.txt'#新文件的路径new_file_path='/path/to/your/new_file_name.txt'#使用os.rename()函数进行重命名os.rename(......
  • python生信01
     001、生成nNnnNNnnnNNN....a、[root@pc1test1]#lstest.py[root@pc1test1]#cattest.py##测试程序#!/usr/bin/envpython3#-*-coding:utf-8-*-foriinrange(1,11):forjinrange(1,i):print("n",end="......
  • 【闲暇一写】用Python编写2048游戏(命令行版)
    本篇博文围绕使用Python开发热门游戏2048GAME(命令行版本)代码未做任何优化(原生且随意)、全程以面向过程、MVC的设计思想为主、开发环境是Ubuntu系统下的Pycharm2048是我很久以前学习Python过程中的一个作业,接下来直入正题——一、了解游戏1.介绍《2048》是一款单人在线和移......
  • python中实现数字的全排列
     001、假定数字为3[root@pc1test1]#lstest.py[root@pc1test1]#cattest.py##测试程序#!/usr/bin/envpython3#-*-coding:utf-8-*-foriinrange(1,4):forjinrange(1,4):ifj==i:continue......
  • 【闲暇一写】用Python编写2048游戏(命令行版)
    本篇博文围绕使用Python开发热门游戏2048GAME(命令行版本)代码未做任何优化(原生且随意)、全程以面向过程、MVC的设计思想为主、开发环境是Ubuntu系统下的Pycharm2048是我很久前学习Python过程中的一个作业,直入正题——一、了解游戏1.介绍《2048》是一款单人在线和移动端游戏......
  • 零基础Python经验体验代码检查工具
    作者:yd_257945187原文链接:<https://bbs.huaweicloud.com/blogs/411648>1 开发小白自述年初,我开始从java语言转战Python语言的开发,对于零基础python经验的人来说,要开发出高质量且安全性能高的Python代码最好的方式莫过于使用代码检查工具辅助了。它们不仅能使工作更加简单、还能够......
  • Python实现网络爬虫
    一、网络爬虫的定义网络爬虫,即WebSpider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一......