python time & datetime 模块的基本用法

我们在编程中常常都会涉及到获取时间,时间的计算等相关的问题 !

在python中呢!关于时间的操作都会用到timedatetime这两个模块,所以我们应该熟练掌握这两个模块的操作!

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()是把localtimegmtime生成的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 (常用)

strftimetime.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模块内还有很多方法,可以参考一些大佬们的博客文章:

  1. https://blog.csdn.net/qq_24753293/article/details/80954840
  2. https://blog.csdn.net/cityzenoldwang/article/details/78356939
  3. 如果以后发现好的博文还会增加

你可能感兴趣的