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. 如果以后发现好的博文还会增加
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,919评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,567评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,316评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,294评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,318评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,245评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,120评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,964评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,376评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,592评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,764评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,460评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,070评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,697评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,846评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,819评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,665评论 2 354

推荐阅读更多精彩内容