日期型时间数据处理1

日期时间数据类型和工具

常用的时间表现形式:时间戳,格式化的时间字符串,Python中的time模块的time.struct_time,datetime模块的datetime类。
Python标准库包含于日期(date)和时间(time)数据的数据类型,datetime、time以及calendar模块会被经常用到。
datetime官方文档:https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
time官方文档:https://docs.python.org/zh-cn/3/library/time.html#module-time
calendar官方文档:https://docs.python.org/zh-cn/3/library/calendar.html#module-calendar

相关术语的解释

  • UTC(Coordinated Universal Time):世界协调时,又称格林尼治天文时间/世界标准时间。与UTC相对应地是各个时区里的local time,东N区的时间比UTC时间早N个小时,因此UTC time + N小时 即为东N区的本地时间;而西N区时间比UTC时间晚N个小时,即 UTC time - N小时 即为西N区的本地时间; 中国在东8区,因此比UTC时间早8小时,可以以UTC+8进行表示;
  • epoch time:表示时间开始的起点;它是一个特定的时间,不同平台上这个时间点的值不太相同,对于Unix而言,epoch time为 1970-01-01 00:00:00 UTC;
  • timestamp(时间戳):也称为Unix时间 或 POSIX时间;它是一种时间表示方式,表示从格林尼治时间1970年1月1日0时0分0秒开始到现在所经过的毫秒数,其值为float类型。 但是有些编程语言的相关方法返回的是秒数(Python就是这样),这个需要看方法的文档说明。需要说明的是时间戳是个差值,其值与时区无关。

time.struct_time

time.struct_time包含如下属性:


time.struct_time属性

属性值获取方式有两种:

  • 把它当做一种特殊的有序不可变序列通过下标/索引获取各个元素的值,如t[0];
  • 通过.属性名 的方式来获取各个元素的值,如t.tm_year。
    需要注意的是:struct_time实例的各个属性都是只读的,不可修改。

time模块

time模块主要用于时间访问和转换,这个模块提供了各种与时间相关的函数。


time函数1

time函数2
  • 获取时间戳格式的时间数据
t1 = time.time()
print(t1)

结果:

1562568773.8972986
  • 获取struct_time格式的时间
t2 = time.localtime()
print(t2)
year = t2[0]
month = t2[1]
day = t2[3]
hour = t2[4]
minute = t2[5]
second = t2[6]

结果是:

time.struct_time(tm_year=2019, tm_mon=7, tm_mday=8, tm_hour=14, tm_min=55, tm_sec=3, tm_wday=0, tm_yday=189, tm_isdst=0)
2019
7
14
55
3
0
  • 获取字符串格式的时间
t3 = time.ctime()
print(t3)
t4 = time.asctime()
print(t4)

结果是:

Mon Jul  8 14:58:36 2019
Mon Jul  8 14:58:53 2019
  • 时间戳格式转struct_time格式时间
t5 = time.time()
print(t5)
t6 = time.localtime(t5)
print(t6)
t7 = time.gmtime(t5)
print(t7)
t8 = time.struct_time(t6)
print(t8)

结果是:

1562569462.8396223
time.struct_time(tm_year=2019, tm_mon=7, tm_mday=8, tm_hour=15, tm_min=4, tm_sec=22, tm_wday=0, tm_yday=189, tm_isdst=0)
time.struct_time(tm_year=2019, tm_mon=7, tm_mday=8, tm_hour=7, tm_min=4, tm_sec=22, tm_wday=0, tm_yday=189, tm_isdst=0)
time.struct_time(tm_year=2019, tm_mon=7, tm_mday=8, tm_hour=15, tm_min=4, tm_sec=22, tm_wday=0, tm_yday=189, tm_isdst=0)

需要注意的是,time.localtime()输入参数是时间戳,time.gmtime()输入参数是struct_time。

  • 字符串格式时间转成struct_time格式时间
a = time.strptime('Sat Feb 04 14:06:42 2017')
print(a)
b = time.strptime('Sat Feb 04 14:06:42 2017', '%a %b %d %H:%M:%S %Y')
print(b)
c = time.strptime('2017-01-13 17:07','%Y-%m-%d %H:%M')
print(c)
d = time.strptime('2017/01/12 17:07','%Y/%m/%d %H:%M')
print(d)
e = time.strptime('201702041412','%Y%m%d%H%M')
print(e)
f = time.strptime('20170204','%Y%m%d')
print(f)
year1 = f[0]
month1 = f[1]
day1 = f[2]
wday1 = f[6]
print(year1)
print(month1)
print(day1)
print(wday1)

结果是:

time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=6, tm_sec=42, tm_wday=5, tm_yday=35, tm_isdst=-1)
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=6, tm_sec=42, tm_wday=5, tm_yday=35, tm_isdst=-1)
time.struct_time(tm_year=2017, tm_mon=1, tm_mday=13, tm_hour=17, tm_min=7, tm_sec=0, tm_wday=4, tm_yday=13, tm_isdst=-1)
time.struct_time(tm_year=2017, tm_mon=1, tm_mday=12, tm_hour=17, tm_min=7, tm_sec=0, tm_wday=3, tm_yday=12, tm_isdst=-1)
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14, tm_min=12, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1)
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1)
2017
2
4
5
  • struct_time格式时间转字符串格式时间
g = time.strftime('%Y-%m-%d %H:%M',time.localtime())
print(g)

结果是:

2019-07-08 15:27
  • 时间戳格式时间转字符串格式时间
h = time.mktime(time.localtime())
print(h)

结果是:

1562571907.0

这是博客上的时间格式转换过程图:


image.png

但是,感觉在我处理过程中我都会转成struct_time格式,因为这样我才能够导出year,month,day,hour,minute,second,wday的值。

所以我都转换过程图如下所示(使用XMind画):
日期时间型数据处理

参考资料:

https://www.jb51.net/article/105840.htm
https://zhuanlan.zhihu.com/p/28209870
https://blog.csdn.net/xiaobing_blog/article/details/12591917
https://blog.csdn.net/LY_ysys629/article/details/73822716
https://www.cnblogs.com/jfl-xx/p/8024596.html

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