网站建设字体颜色代码石家庄seo外包公司
计算机的系统时钟设置为特定的日期、时间和时区。内置的 time 模块让 Python程序能读取系统时钟的当前时间。在 time 模块中, time.time()和 time.sleep()函数是最有用的模块。
time模块
time.time()函数
Unix 纪元是编程中经常参考的时间: 1970 年 1 月 1 日 0 点,即协调世界时( UTC)。time.time()函数
返回自那一刻以来的秒数,是一个浮点值(回想一下,浮点值只是一个带小数点的数)。这个数字称为 UNIX 纪元时间戳。
纪元时间戳可以用于剖析代码,也就是测量一段代码的运行时间。如果在代码块开始时调用time.time(), 并在结束时再次调用,就可以用第二个时间戳减去第一个,得到这两次调用之间经过的时间。
import time
def calcProd():# Calculate the product of the first 100,000 numbers.product = 1for i in range(1, 100000):product = product * ireturn product
startTime = time.time()
prod = calcProd()
endTime = time.time()
print('The result is %s digits long.' % (len(str(prod))))
print('Took %s seconds to calculate.' % (endTime - startTime))
输出:
The result is 456569 digits long.
Took 10.653937101364136 seconds to calculate.
time.sleep()函数
如果需要让程序暂停一下,就调用 time.sleep()函数,并传入希望程序暂停的秒数
>>> import time
>>> for i in range(3):print('Tick')time.sleep(1)print('Tock')time.sleep(1)
time.gmtime([secs])
将 seconds since the epoch 为单位的时间转换为UTC的 struct_time ,其中dst标志始终为零。如果未提供 secs 或为 None ,则使用由 time() 返回的当前时间。忽略一秒的分数。
time.localtime([secs])
与 gmtime() 相似但转换为当地时间。如果未提供 secs 或为 None ,则使用由 time() 返回的当前时间。当 DST 适用于给定时间时,dst标志设置为 1 。
localtime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min, tm_sec,tm_wday,tm_yday,tm_isdst)
import timet=time.localtime()
print('年:%s\t月:%s\t日:%s'%(t.tm_year,t.tm_mon,t.tm_mday))
输出:
年:2019 月:6 日:19
strftime(format[, tuple]) -> string:
将结构化时间转化为字符串时间
- format:为格式化的时间格式,
- p_tuple为格式化时间
print(time.strftime('%Y-%m-%d',time.localtime()))
输出:2019-06-19
strptime(string, format) -> struct_time
字符串时间转化为格式化时间
#------将字符串时间转成结构化时间strptime
print(time.strptime("2016:12:24:17:50:36","%Y:%m:%d:%X"))
asctime([tuple]) -> string
When the time tuple is not present, current time as returned by localtime()
ctime(seconds) -> string
print(time.asctime())
print(time.ctime())
输出:
Wed Jun 19 16:05:21 2019
Wed Jun 19 16:05:21 2019
了解更多,请参考官方文档
datetime 模块
time 模块用于取得 Unix 纪元时间戳,并加以处理。但是,如果以更方便的格式显示日期,或对日期进行算术运算(例如,搞清楚 205 天前是什么日期,或 123天后是什么日期),就应该使用 atetime 模块。
datetime 模块有自己的 datetime 数据类型。 datetime 值表示一个特定的时刻。
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2015, 2, 27, 11, 10, 49, 55, 53)
>>> dt = datetime.datetime(2015, 10, 21, 16, 29, 0)
>>> dt.year, dt.month, dt.day
(2015, 10, 21)
>>> dt.hour,dt.minute, dt.second
(16, 29, 0)
调用 datetime.datetime.now()
返回一个 datetime 对象,表示当前的日期和时间,根据你的计算机的时钟。这个对象包含当前时刻的年、月、日、时、分、秒和微秒。也可以利用 datetime.datetime()函数
,向它传入代表年、月、日、时、分、秒的整数,得到特定时刻的 datetime 对象。这些整数将保存在 datetime 对象的 year、month、 day、 hour、 minute 和 second属性中。
Unix 纪元时间戳可以通过datetime.datetime.fromtimestamp()
转换为 datetime对象。 datetime 对象的日期和时间将根据本地时区转换。
>>> datetime.datetime.fromtimestamp(1000000)
datetime.datetime(1970, 1, 12, 5, 46, 40)
>>> datetime.datetime.fromtimestamp(time.time())
datetime.datetime(2015, 2, 27, 11, 13, 0, 604980)
timedelta 数据类型
datetime 模块还提供了 timedelta 数据类型,它表示一段时间,而不是一个时刻。
>>> delta = datetime.timedelta(days=11, hours=10, minutes=9, seconds=8)
>>> delta.days, delta.seconds, delta.microseconds
(11, 36548, 0)
>>> delta.total_seconds()
986948.0
>>> str(delta)
'11 days, 10:09:08'
要创建 timedelta 对象
,就用 datetime.timedelta()函数
。 datetime.timedelta()函数接受关键字参数 weeks、 days、 hours、 minutes、 seconds、 milliseconds 和 microseconds。没有 month 和 year 关键字参数,因为“月”和“年”是可变的时间,依赖于特定月份或年份。 timedelta 对象拥有的总时间以天、秒、微秒来表示。这些数字分别保存在 days、 seconds 和 microseconds 属性中。 total_seconds()方法返回只以秒表示的时间。将一个 timedelta 对象传入 str(),将返回格式良好的、人类可读的字符串表示。
将 datetime 对象转换为字符串
Unix 纪元时间戳和 datetime 对象对人类来说都不是很友好可读。利用strftime()方法
,可以将 datetime 对象显示为字符串。(strftime()函数名中的 f 表示格式, format)。
向 strftime()传入一个定制的格式字符串,其中包含格式化指定(以及任何需要的斜线、冒号等), strftime()将返回一个格式化的字符串,表示 datetime 对象的信息。
>>> oct21st = datetime.datetime(2015, 10, 21, 16, 29, 0)
>>> oct21st.strftime('%Y/%m/%d %H:%M:%S')
'2015/10/21 16:29:00'
>>> oct21st.strftime('%I:%M %p')
'04:29 PM'
>>> oct21st.strftime("%B of '%y")
"October of '15"
将字符串转换成 datetime 对象
如果有一个字符串的日期信息,如’2015/10/21 16:29:00’或’October 21, 2015’,需要将它转换为 datetime 对象,就用 datetime.datetime.strptime()函数。strptime()函数
与strftime()方法相反。定制的格式字符串使用相同的指令,像 strftime()一样。必须将格式字符串传入 strptime(),这样它就知道如何解析和理解日期字符串( strptime()函数名中 p 表示解析, parse)。
>>> datetime.datetime.strptime('October 21, 2015', '%B %d, %Y')
datetime.datetime(2015, 10, 21, 0, 0)
>>> datetime.datetime.strptime('2015/10/21 16:29:00', '%Y/%m/%d %H:%M:%S')
datetime.datetime(2015, 10, 21, 16, 29)
>>> datetime.datetime.strptime("October of '15", "%B of '%y")
datetime.datetime(2015, 10, 1, 0, 0)
>>> datetime.datetime.strptime("November of '63", "%B of '%y")
datetime.datetime(2063, 11, 1, 0, 0)