[编程经验] Python中处理时间的方法小结

时间:2022-05-08
本文章向大家介绍[编程经验] Python中处理时间的方法小结,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Python有非常完善的时间处理方法,常用的module有datetime, time。接下来主要介绍几个概念和一些常用的方法。

# UTC时间

UTC时间是CUT(Coordinated Universal Time),和TUC(Temps Universel Coordonné)两种简写的合成版,对应的是英语和法语的不同而导致的。UTC表示世界标准时间,也叫世界协调时,格林尼治天文时间。这个貌似是初中地理学过?忘记了。与世界标准时间相对应的就是当地时间,local time,比如我们在东八区,那local time 就表示东八区的时间,世界的分区是从东1到12, 还有西1到12。一般是东边的时间相对于世界标准时间加n个小时,n=区号。西边的时间是减n个小时。

好,故事讲完了,下面开始Python。

## time ##

# time.time

time模块中时间的表示是以时间戳的形式,时间戳就是一种时间的计数方法,不用去纠结。然后我们看一下,time模块中需要学习的方法。

import time
now = time.time()
print now
# 1496065442.08

首先可以使用time.time方法查看当前时间,结果他返回的是十四亿九千六百零六万五千四百四十四.零八。这表示什么,我想看下几点了, 你给我显示这个?!别急,time模块的计数方法是以1970年1月1日12点为计数起点,就是0.然后每过1秒就加1.所以刚才哪个是十四亿多,过去的四十多年的时间的以秒来计就这么多。

那这个有什么用呢,我嫌的没事,数过去有多少秒?其实这个方法是比较常用的,一般用在计算程序的运行时间上,比如:

start_time = time.time()
one_plus = range(100)
for x in one_plus:
    z = x + 100
print time.time() - start_time
# 0.000999927520752

而计算程序时间的好处是什么呢? 时间就是生命,时间就是金钱啊!当我们发现我们的开发的算法,变得异常的慢的时候,是不是应该考虑程序哪里是不是出了问题。还有在训练算法的时候,有意识的计算一下每一个epoch的运行时间,可以分析一下,整个程序运行完需要多少时间。

# time.ctime(), time.localtime()

c_time = time.ctime()
print c_time
# Mon May 29 21:58:26 2017
local_time = time.localtime()
print local_time
# time.struct_time(tm_year=2017, tm_mon=5, 
tm_mday=29, tm_hour=21, tm_min=58, tm_sec=26,
 tm_wday=0, tm_yday=149, tm_isdst=0)

localtime()返回的是当地时间,包括年份,月份,日期,小时,分钟,秒,星期几,由0-6依次表示星期一到星期天。tm_yday表示一年中的第多少天,最后一个表示是不是夏令时,0表示否。

# time.strftime和time.strptime

strftime是一个常用的方法,用来格式化输出时间,格式化输出的意思是按照给定的格式来输出时间。当然这个格式也不是由你自己随便给格式,要符合Python的格式。strftime可以把time类型的时间,转化为str字符型。而striptime刚好相反,是把字符型的时间,转换为时间类型。看个栗子

import time
print time.strftime("%Y_%M_%d_%H_%M_%S")
# 2017_16_29_22_16_13
print time.strptime('2017-5-29', '%Y-%M-%d')
# time.struct_time(tm_year=2017, tm_mon=1, tm_mday=29,
 tm_hour=0, tm_min=5, tm_sec=0, tm_wday=6, tm_yday=29, 
 tm_isdst=-1)
print time.strptime("2017_5_29.22:21:45", 
                    "%Y_%m_%d.%H:%M:%S")
# time.struct_time(tm_year=2017, tm_mon=5, 
tm_mday=29, tm_hour=22, tm_min=21, tm_sec=45,
 tm_wday=0, tm_yday=149, tm_isdst=-1)

## datetime ## 

# datetime.datetime, datetime.now, datetime. strftime

datetime返回的是我们见的比较多的输出形式,now可以获得现在的日期,strfttime就是格式化输出的函数,它适合time类,也适合datetime类。然后我们对比一下不同的格式所对应的输出的区别,这里基本把所有可能的输出都包括了,剩下的就是自己可以随意组合。主要区别在于大小写,以及不同字母表示的意义。这个没必要记哈,我觉得,找一个自己看着顺眼的输出格式,然后每次用的时候,就用那个就行了。

from datetime import datetime
now = datetime.now()
# # print
print now.strftime("%Y")
print now.strftime("%Y_%B")
print now.strftime("%Y_%B_%d")
print now.strftime("%Y_%B_%d.%H")
print now.strftime("%Y_%B_%d.%H_%M")
print now.strftime("%Y_%B_%d.%H_%M_%S")
# 2017
# 2017_May
# 2017_May_29
# 2017_May_29.22
# 2017_May_29.22_30
# 2017_May_29.22_30_26
from datetime import datetime
now = datetime.now()
# # print
print now.strftime("%y")
print now.strftime("%y_%m")
print now.strftime("%y_%m_%d")
print now.strftime("%y_%m_%d.%I")
print now.strftime("%y_%m_%d.%I_%m")
print now.strftime("%y_%m_%d.%I_%m_%f")
# 17
# 17_05
# 17_05_29
# 17_05_29.10
# 17_05_29.10_05
# 17_05_29.10_05_562000  # 毫秒输出

重点:Y-y;B-m;H-I;M-m;S-f。

我经常用的就是这些了,还有些不常用的,有兴趣可以自己去看看~