python time & datetime 模块的基本用法
我们在编程中常常都会涉及到获取时间,时间的计算等相关的问题 !
在python中呢!关于时间的操作都会用到time
和datetime
这两个模块,所以我们应该熟练掌握这两个模块的操作!
time模块
time()方法
获取当前时间戳
时间戳是什么呢?给在百度找了一个讲的很好的,可以参考,「什么是时间戳」
>>> import time
>>> time.time()
1538487182.2460868
时间戳可用于 time() 模块的其他内置函数,比如 localtime,ctime,gmtime
localtime([secs]) & gmtime([secs])
接收时间戳,返回指定时间戳的时间元组,localtime
返回的是当地时间
的时间元组,gmtime
返回的是格林威治
时间的时间元组(零时区)。
如果你是在中国当然获取的是北京,也就是东八区的时间,每个国家都是用自己国家首都所在区的区时。
>>> import time
>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=10, tm_mday=2, tm_hour=22, tm_min=0, tm_sec=30, tm_wday=1, tm_yday=275, tm_isdst=0)
>>> time_obj = time.localtime()
>>> time_obj.tm_year #获取其中的tm_year
2018
>>> time_obj[0] #获取其中的tm_year
2018
>>> time.gmtime()
time.struct_time(tm_year=2018, tm_mon=10, tm_mday=2, tm_hour=14, tm_min=0, tm_sec=45, tm_wday=1, tm_yday=275, tm_isdst=0)
localtime()
和 gmtime
都是返回的是个struct_time
类型的数据,里面分别有:
类型 | 类型 |
---|---|
tm_year | 年 |
tm_mon | 月 |
tm_mday | 一个月中的第几天 |
tm_hour | 小时 |
tm_min | 分钟 |
tm_sec | 秒 |
tm_wday | 星期几 |
tm_yday | 一年中的第几天 |
tm_isdst | 是否是周末 |
附加拓展
如果我们想要得到一个类似年-月-日
这种类型的字符串,那怎么弄呢?我们可以使用python的字符串格式化。
import time
time_obj = time.localtime()
print('{year}-{month}-{day}'.format(year=time_obj.tm_year,
month=time_obj.tm_mon,
day=time_obj.tm_mday))
asctime() & ctime()
asctime([tuple]) -> string
ctime(seconds) -> string
asctime()
是把localtime
和gmtime
生成的time.struct_time
类型的转化为字符串类型,ctime
是把时间戳转化为字符串类型。
例子:
>>> time.asctime(time.localtime())
'Wed Oct 3 14:04:40 2018'
>>> time.ctime(time.time())
'Wed Oct 3 14:04:53 2018'
>>> time.asctime()
'Wed Oct 3 14:05:04 2018'
>>> time.ctime()
'Wed Oct 3 14:05:09 2018'
如果没有传递参数默认是当前时间
mktime()
将time.struct_time
类型转化为时间戳格式
例子
>>> time.mktime(time.localtime())
1538548189.0
sleep(sec) (常用)
让程序延时,参数是秒数
例子
import time
print('hello')
time.sleep(3)
print('world!')
strftime() & strptime (常用)
strftime
把time.struct_time
类型转成你想指定的格式的字符串类型,strptime
是把一个字符串格式的时间转化为time.struct_time
类型。
例子
>>> time.strftime("%Y-%m-%d %w %H:%M:%S",time.localtime())
'2018-10-03 3 14:41:15'
>>> time.strptime('2018-10-03 3 14:41:15', "%Y-%m-%d %w %H:%M:%S")
time.struct_time(tm_year=2018, tm_mon=10, tm_mday=3, tm_hour=14, tm_min=41, tm_sec=15, tm_wday=2, tm_yday=276, tm_isdst=-1)
大部分人应该都不知道"%Y-%m-%d %w %H:%M:%S"
是什么东西,我在网上给大家找了一个参考:
格式符 | 说明 |
---|---|
%a | 星期的英文单词的缩写:如星期一, 则返回 Mon |
%A | 星期的英文单词的全拼:如星期一,返回 Monday |
%b | 月份的英文单词的缩写:如一月, 则返回 Jan |
%B | 月份的引文单词的缩写:如一月, 则返回 January |
%c | 返回datetime的字符串表示,如03/08/15 23:01:26 |
%d | 返回的是当前时间是当前月的第几天 |
%f | 微秒的表示: 范围: [0,999999] |
%H | 以24小时制表示当前小时 |
%I | 以12小时制表示当前小时 |
%j | 返回当天是当年的第几天 范围[001,366] |
%m | 返回月份 范围[0,12] |
%M | 返回分钟数 范围 [0,59] |
%P | 返回是上午还是下午–AM or PM |
%S | 返回十进制的秒数 范围 [0,61] |
%U | 返回当周是当年的第几周 以周日为第一天 |
%W | 返回当周是当年的第几周 以周一为第一天 |
%w | 当天在当周的天数,范围为[0, 6],6表示星期天 |
%x | 日期的字符串表示 :03/08/15 |
%X | 时间的字符串表示 :23:22:08 |
%y | 两个数字表示的年份 15 |
%Y | 四个数字表示的年份 2015 |
%z | 与utc时间的间隔 (如果是本地时间,返回空字符串) |
%Z | 时区名称(如果是本地时间,返回空字符串) |
这个表格是不需要记忆的,能记住常用的就行了,到时候用到了再来查表举行了
datetime 模块
date.today()
输出当前日期
import datetime
a = datetime.date.today()
print(a)
print(type(a)) #这里的a其实是一个对象
date.fromtimestamp()
时间戳直接转成日期格式
import datetime
import time
print(datetime.date.fromtimestamp(time.time()) )
并不常用 我们直接用time模块的
strftime
更方便
datetime.now()
放回当前时间的毫秒精度
import datetime
print(datetime.datetime.now())
timetuple() & timestamp()
timetuple
获取struct_time格式的时间,timestamp
获取时间戳
import datetime
import time
now = datetime.datetime.now()
print(now)
print(now.timestamp())
print(now.timetuple())
时间是可以运算的,在python中的时间运算是很简单的
直接看代码
import datetime
import time
print(datetime.datetime.now() )
print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
print(datetime.datetime.now() + datetime.timedelta(seconds=30)) #当前时间+30分
timedelta
函数的参数还有很多,直接查看timedelta
的源代码就知道了
replace()
把datetime.datetime
对象的数据替换成另外一个时间
例子
import datetime
import time
now = datetime.datetime.now()
print(now)
print(type(now))
print(now.replace(year=2008, month=5, day=5, hour=10,
minute=10, second=20, microsecond=2))
strptime()
把一个字符串格式的时间转成datetime
的一个类
import datetime
import time
print(datetime.datetime.strptime('2018-10-03 3 14:41:15', "%Y-%m-%d %w %H:%M:%S"))
这里我主要总结了特别常用的一些方法,time和datetime模块内还有很多方法,可以参考一些大佬们的博客文章: