python中的time和datetime模块

写代码时经常需要处理日期时间问题,Python 中提供了对时间日期的多种多样的处理方式,主要是在 time 和 datetime 这两个模块里,这里简单总结下。

time

在 Python 文档里, time 是归类在 Generic Operating System Services 中,换句话说, 它提供的功能是更加接近于操作系统层面的。通读 文档 可知,time 模块是围绕着 Unix Timestamp 进行的。
该模块主要包括一个类 struct_time ,另外其他几个函数及相关常量。 需要注意的是在该模块中的大多数函数是调用了所在平台 C library 的同名函数, 所以要特别注意有些函数是平台相关的,可能会在不同的平台有不同的效果。另外一点是,由于是基于Unix Timestamp,所以其所能表述的日期范围被限定在 1970 - 2038 之间,如果你写的代码需要处理在前面所述范围之外的日期,那可能需要考虑使用 datetime 模块更好。文档解释比较费劲,具体看看怎么用:

使用方法:

stramp = time.time()       #获取当前时间戳
time.ctime()               #'Wed Jun 15 11:15:53 2016'
struct = time.locatime()   #获取struct格式的时间
time.mktime(struct)        #把时间戳变成struct格式
time.loctime(stramp)      #把时间戳转换成struct格式,一般可用于把一个float数字转换成struct
time.strftime('%Y-%m-%d', time.loctime())    #把struct格式的时间按照给出的格式格式化,类似于datetime.datetime.now().strftime('%Y-%m-%d')

datetime

datetime 比 time 高级了不少,可以理解为 datetime 基于 time 进行了封装,提供了更多实用的函数。在datetime 模块中包含了几个类,具体关系如下:

object
    timedelta     # 主要用于计算时间跨度
    tzinfo        # 时区相关
    time          # 只关注时间
    date          # 只关注日期
    datetime      # 同时有时间和日期
datetime.replace(name=value) # 前面所述各项属性是 read-only 的,需要此方法才可更改
datetime.timetuple() # 返回time.struct_time 对象
dattime.strftime(format) # 按照 format 进行格式化输出

#除了实例本身具有的方法,类本身也提供了很多好用的方法:
datetime.today()a  # 当前时间,localtime
datetime.now([tz]) # 当前时间默认 localtime
datetime.utcnow()  # UTC 时间
datetime.fromtimestamp(timestamp[, tz]) # 由 Unix Timestamp 构建对象
datetime.strptime(date_string, format)  # 给定时间格式解析字符串

# datetime.timedelta
today = datetime.datetime.today()    #2016-06-15 11:21:00.205354
tomorrow = date + datetime.timedelta(days=1)
next_hour = datetime.datetime.now() + datetime.timedelta(hours=1)

time和datetime的转换

timestramp = time.loctime
datetime.datetime.fromtimestamp(timestramp)      #时间戳转换成datetime.datetime型,等价于 datetime.datetime.now()
datetime.datetime.timetuple(datetime.datetime.now)     #把datetime.datetime格式转换成time模块的struct格式
time.mktime(datetime.datetime.timetuple(datetime.datetime.now()))

几个关于时间的例子

获取明天的时间戳

方法一:

today = time.time()
tomorrow = today + 86400

方法二:

today = datetime.datetime.today()
tomorrow = today + datetime.timedelt(days=1)
datetime.datetime.timetuple(tdoay)    #把当前时间按照time的struct_time的格式输出
today_timestamp = time.mktime(datetime.datetime.timetuple(today))
tomorrow_timestamp = time.mktime(datetime.datetime.timetuple(tomorrow))

计算两个时间差

t1 = '2017-10-31 16:14:08'
t2 = '2017-08-26 10:04:12'
t11= datetime.datetime.strptime(t1, '%Y-%m-%d %H:%M:%S')
t22= datetime.datetime.strptime(t2, '%Y-%m-%d %H:%M:%S')

t11-t22
Out[12]: datetime.timedelta(66, 22196)
(t11-t22).days
Out[13]: 66

获取某天的时间戳

day = datetime.today().date() - timedelta(days=6)
 
# 首先用 time.strptime() 这个函数把日期转换为 struct_time 对象
# 然后用 time.mktime() 函数返回浮点类型的时间戳
ts = time.mktime(time.strptime(str(day), '%Y-%m-%d'))

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

推荐阅读更多精彩内容

  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,301评论 6 428
  • 原文链接:http://www.cnblogs.com/lhj588/archive/2012/04/23/246...
    qtruip阅读 1,271评论 0 0
  • GitHub 上有一个 Awesome - XXX 系列的资源整理,资源非常丰富,涉及面非常广。awesome-p...
    若与阅读 18,511评论 4 418
  • 乡下的空气是新鲜纯凈的,街道整齐。门前柿树硕果累累,枝头弯弯,渐露红颜;或是丝瓜藤蔓漫延,黄花招摇,丝瓜悬吊;又或...
    淡然li阅读 445评论 23 19
  • 今天同事希望用真机调试react native iOS 应用,在网上找的方法都太老旧,基本都是Xcode7,rea...
    wk63阅读 12,482评论 0 9