添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

二、时间与日期 (time, datetime包)

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

1、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

2、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)

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

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

print(t_next.strftime(format))

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

三、路径与文件 (os.path包, glob包)

1、os.path包

os.path包主要是处理路径字符串,比如说'/home/vamei/doc/file.txt',提取出有用信息。

import os.path
path = '/home/vamei/doc/file.txt'
print(os.path.basename(path))    # 查询路径中包含的文件名
print(os.path.dirname(path))     # 查询路径中包含的目录
info = os.path.split(path)       # 将路径分割成文件名和目录两个部分,放在一个表中返回
path2 = os.path.join('/', 'home', 'vamei', 'doc', 'file1.txt')  # 使用目录名和文件名构成一个路径字符串
p_list = [path, path2]
print(os.path.commonprefix(p_list))    # 查询多个路径的共同部分

此外,还有下面的方法:

os.path.normpath(path)   # 去除路径path中的冗余。比如'/home/vamei/../.'被转化为'/home'

os.path还可以查询文件的相关信息(metadata)。文件的相关信息不存储在文件内部,而是由操作系统维护的,关于文件的一些信息(比如文件类型,大小,修改时间)。

import os.path 
path = '/home/vamei/doc/file.txt'
print(os.path.exists(path))    # 查询文件是否存在
print(os.path.getsize(path))   # 查询文件大小
print(os.path.getatime(path))  # 查询文件上一次读取的时间
print(os.path.getmtime(path))  # 查询文件上一次修改的时间
print(os.path.isfile(path))    # 路径是否指向常规文件
print(os.path.isdir(path))     # 路径是否指向目录文件
 

(实际上,这一部份类似于Linux中的ls命令的某些功能)

二、时间与日期 (time, datetime包)Python具有良好的时间和日期管理功能。实际上,计算机只会维护一个挂钟时间(wall clock time),这个时间是从某个固定时间起点到现在的时间间隔。时间起点的选择与计算机相关,但一台计算机的话,这一时间起点是固定的。其它的日期信息都是从这一时间计算得到的。此外,计算机还可以测量CPU实际上运行的时间,也就是处理器时间(proces
datetime 模块提供了可以通过多种方式操作日期和时间的类。在支持日期时间数学运算的同时,实现的关注点更着重于如何能够更有效地解析其属性用于格式化输出和数据操作。 datetime 模块括 data、time 的所有功能,常用的 datatime 实例方法如下: datetime.now():获取当天的日期和时间 datetime.date(t):获取当天的日期,t 为 datetime 实例参数 datetime.time(t):获取当天的时间,t 为 datetime 实例参数 datetime.ctime(t):获取【星期 月 日 时 分 秒 年】格式的字符串,t 为 dateti
Python中与处理时间有关的模块timedatetime和calenda。 先理清几个概念: 时间戳(timestamp):表示从1970年1月1日00:00:00开始按秒计算的偏移量。 UTC:世界协调时,亦即格林威治天文时间,世界标准时间 DST:夏令时 时间元组(time_struct):时间元组含9个元素,返回time_struct的函数主要有gmtime(),localtime(),strptime()。 时间元组中的参数:
Python内置两个关于时间处理的timedatetime。本文用于记录笔者在使用这两个时的一些心得,将会不间断更新。 从命名上讲,time提供处理时间相关的函数,datetime提供处理时间日期相关的函数。 time time.sleep() time.sleep()是time中使用最频繁的函数之一,它接收一个参数,用于以单位秒指定睡眠时间,任何调用该方法的线程都会阻塞至计时完成。 time.sleep(1) # 当前线程将睡眠1s time.time() 计时绕不开一个固定时间.
date类是一个日期类,由年、月、日组成。由于Python也是面向对象编程语言,所以针对类,就会有构造函数,该类的构造函数如下:  class datetime.date(year, month, day):  year : 表示年,范围[MINYEAR, MAXYEAR],即[1, 9999]  month : 表示月,范围[1, 12]  day :一月中第几天,最大值根据给定的yea
unix纪元:1970年1月1日0点,即协调世界时间(UTC), 中时区为UTC, 我们所在的东8区为UTC+8. datetime.fromtimestamp()在可选参数tz未指定时, 会自动将时间戳转化为当地的日期和时间, 但如果遇到只转化到UTC的情况, 我们需要手动加上8个小时.I. time模块 time.time() time.sleep() II...
之前做到日期时间的时候,有许多格式问题和日期时间比较问题,以及相关条件约束,因为不熟悉这个,浪费许多时间,查找相关资料,记录,以作备用。 1. Convert.ToDateTime       使用的是Windows控制模版中对日期格式的定义,可以使用Convert.ToDateTime("12-02-02").ToString("YYYY-MM-DD "); 或者Convert.To
Pythondatetime是用来处理日期和时间的,在Python标准中自带。下面是datetime的主要内容: 1. date类:表示日期,括年、月、日等属性和相应的方法。例如: ```python from datetime import date # 创建date对象 d = date(2021, 9, 1) # 获取年、月、日等信息 print(d.year) # 2021 print(d.month) # 9 print(d.day) # 1 # 获取星期几(0表示周一,6表示周日) print(d.weekday()) # 2 2. time类:表示时间,括时、分、秒、微秒等属性和相应的方法。例如: ```python from datetime import time # 创建time对象 t = time(12, 30, 0) # 获取时、分、秒、微秒等信息 print(t.hour) # 12 print(t.minute) # 30 print(t.second) # 0 print(t.microsecond) # 0 3. datetime类:表示日期和时间的组合,括年、月、日、时、分、秒、微秒等属性和相应的方法。例如: ```python from datetime import datetime # 创建datetime对象 dt = datetime(2021, 9, 1, 12, 30, 0) # 获取年、月、日、时、分、秒、微秒等信息 print(dt.year) # 2021 print(dt.month) # 9 print(dt.day) # 1 print(dt.hour) # 12 print(dt.minute) # 30 print(dt.second) # 0 print(dt.microsecond) # 0 # 获取日期和时间的字符串表示 print(dt.strftime('%Y-%m-%d %H:%M:%S')) # 2021-09-01 12:30:00 4. timedelta类:表示时间间隔,可以用于计算两个日期或时间的差值。例如: ```python from datetime import timedelta # 创建timedelta对象 td = timedelta(days=1, hours=2) # 计算时间间隔 print(td.days) # 1 print(td.seconds) # 7200 print(td.total_seconds()) # 93600.0 除了以上的类和函数之外,datetime括一些其他的函数和常量,例如: - datetime.now():获取当前日期和时间。 - datetime.today():获取当前日期和时间,与now()方法的区别在于返回值的时区不同。 - datetime.strptime():将字符串解析为datetime对象。 - datetime.date():将datetime对象转换为date对象。 - datetime.time():将datetime对象转换为time对象。 - datetime.timestamp():将datetime对象转换为UNIX时间戳。 - datetime.utcfromtimestamp():将UNIX时间戳转换为datetime对象。 - datetime.min和datetime.max:表示datetime的最小值和最大值。 - datetime.resolution:表示datetime对象的最小时间单位。