python 时间模块(time ,datetime,calendar)
Python中提供了时间相关的内置模块,我们主要用的是:time模块、datetime模块和calendar模块
⽇期格式化的标准:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m ⽉份(01-12)
%d ⽉内中的⼀天(0-31)
%H 24⼩时制⼩时数(0-23)
%I 12⼩时制⼩时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的⽉份名称
%B 本地完整的⽉份名称
%c 本地相应的⽇期表示和时间表示
%j 年内的⼀天(001-366)
%p 本地A.M.或P.M.的等价符
%U ⼀年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W ⼀年中的星期数(00-53)星期⼀为星期的开始
%x 本地相应的⽇期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
一、时间相关的术语
UTC time Coordinated Universal Time,世界协调时,又称 格林尼治天文时间、世界标准时间。与UTC time对应的是各个时区的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模块
1、时间戳(timestamp):时间戳使用的是从1970年01月01日 00点00分00秒到现在一共经过了多少秒。。。使用的是float来表示。
import time
# time.time() 表示时间戳
s=time.time()#1542167172.0260832 数据库中存储采用的是这种时间
2、格式化时间(strftime):这个时间主要可以把时间进行任意的格式化输出。
import time
s2=time.strftime("%Y-%m-%d %H:%M:%S") #2018-11-14 19:27:47
3、结构化时间(struct_time):这个时间主要可以把时间分类划分。
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=14, tm_hour=12, tm_min=3, tm_sec=9, tm_wday=2, tm_yday=318, tm_isdst=0)
4、三种时间之间的转换
时间戳 -> 结构化时间:time.localtime( 时间戳)、time.gmtime( 时间戳)
import time
s=time.localtime(18888888) #时区问题 gmtime :格林尼治时间
# time.struct_time(tm_year=1970, tm_mon=8, tm_mday=7,
# tm_hour=22, tm_min=54, tm_sec=48, tm_wday=4, tm_yday=219, tm_isdst=0)
结构化时间 -> 格式化时间:time.strftime(时间格式,结构化时间)
import time
s=time.localtime()
s2=time.strftime("%Y-%m-%d %H:%M:%S",s)
print(s2) #2018-11-14 19:47:30
格式化时间 ->结构化时间:time.strptime(格式化时间,相应的格式字符串)
import time
s1="1995-3-15 03:29:37"
struct_s1=time.strptime(s1,"%Y-%m-%d %H:%M:%S")
print(struct_s1)
#time.struct_time(tm_year=1995, tm_mon=3, tm_mday=15, #tm_hour=3, tm_min=29, tm_sec=37, tm_wday=2, tm_yday=74, #tm_isdst=-1)
结构化时间 -> 时间戳:time.mktime(结构化时间)
import time
s=time.localtime()
s2=time.mktime(s)
print(s2)#1542196252.0
5、时间差的计算
计算时间差
# 假定给两个时间
import time
s1="2017-9-20 03:29:37"
s2="2018-3-15 12:3:55"
# # 格式化时间 -> 结构化时间
struct_s1=time.strptime(s1,"%Y-%m-%d %H:%M:%S")
struct_s2=time.strptime(s2,"%Y-%m-%d %H:%M:%S")
# 结构化时间 -> 时间戳
s1_chou=time.mktime(struct_s1)
s2_chou=time.mktime(struct_s2)
time_cha=abs(s2_chou-s1_chou)
# 时间戳-> 结构化时间
new_time=time.gmtime(time_cha)
# time.struct_time(tm_year=1996, tm_mon=7, tm_mday=29, tm_hour=17, tm_min=1, tm_sec=19, tm_wday=0, tm_yday=211, tm_isdst=0)
y_cha=new_time.tm_year-1970
m_cha=new_time.tm_mon-1
d_cha=new_time.tm_mday-1
H_cha=new_time.tm_hour
M_cha=new_time.tm_min
S_cha=new_time.tm_sec
print("两个时间相隔 %s 年 %s 月 %s 日 %s 时 %s 分 %s 秒"% (y_cha,m_cha,d_cha,H_cha,M_cha,S_cha)) import time
true_time=time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S'))
time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S'))
dif_time=time_now-true_time
struct_time=time.gmtime(dif_time)
print(struct_time)
print('过去了%d年%d⽉%d天%d⼩时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,struct_time.tm_mday-1,struct_time.tm_hour,struct_time.tm_min,struct_time.tm_sec))
#
利用时间戳计算时、分、秒
hours=dif_time//3600
minute=dif_time%3600//60
secend=dif_time%3600%60 print("过去了 %s 小时 %s 分钟 %s秒"%(hours,minute,secend))
二、datetime模块
- date 类(记住这一个)
date类有三个参数,datetime.date(year,month,day),返回year-month-day
需要的时候再看这里
1.datetime.date.ctime(),返回格式如 Sun Apr 16 00:00:00 2017 2.datetime.date.fromtimestamp(timestamp),根据给定的时间戮,返回一个date对象;datetime.date.today()作用相同 3.datetime.date.isocalendar():返回格式如(year,month,day)的元组,(2017, 15, 6) 4.datetime.date.isoformat():返回格式如YYYY-MM-DD 5.datetime.date.isoweekday():返回给定日期的星期(0-6),星期一=0,星期日=6 6.datetime.date.replace(year,month,day):替换给定日期,但不改变原日期 7.datetime.date.strftime(format):把日期时间按照给定的format进行格式化。 8.datetime.date.timetuple():返回日期对应的time.struct_time对象 time.struct_time(tm_year=2017, tm_mon=4, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=105, tm_isdst=-1) 9.datetime.date.weekday():返回日期的星期
- time类 (记住这一个)
datetime.time(hour,minute,second,microsecond,tzoninfo),返回08:29:30
有需求再看
1.datetime.time.replace() 2.datetime.time.strftime(format):按照format格式返回时间 3.datetime.time.tzname():返回时区名字 4.datetime.time.utcoffset():返回时区的时间偏移量
三、calendar模块
1、calendar.calendar(year,w=2,l=1,c=6) 返回某年的日历,每日宽度w字符,每行21*w+8+2*c,i表示星期
2、calendar.firstweekday( ) 返回当前每周起始日期的设置。默认情况下,首次载入caendar模块时返回0,即星期一。
3、calendar.isleap(year) 判断是否为润年
4、calendar.leapdays(y1,y2) 返回[y1, y2)润年总数
5、calendar.month(year,month,w=2,l=1) 返回某年某月的的日历
6、calendar.monthcalendar(year,month) 返回某年某月日历,以列表形式显示
7、calendar.setfirstweekday(weekday) 设置每周的起始日期码。0(星期一)到6(星期日)。
8、calendar.timegm(tupletime) 和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间辍
(1970纪元后经过的浮点秒数)。
9、calendar.weekday(year,mouth,day) 返回星期码,0表示星期1
python 时间模块(time ,datetime,calendar)的更多相关文章
- Python3之时间模块time & datetime & calendar
一. 简介 python 提供很多方式处理日期与时间,转换日期格式是一个常见的功能. 时间元组:很多python函数用一个元组装起来的9组数字处理时间. python中时间日期格式化符号: %y 两位 ...
- Day 16 : Python 时间模块[time,]datetime[]及第三方模块的下载与安装
在进行python程序开发时,除了可以使用python内置的标准模块外,还右许多第三方模块使用,可以在python官网找到. 在使用第三方模块时,需要下载并安装此模块,然后就可以使用标准模块一样导入并 ...
- Python时间模块datetime用法
时间模块datetime是python内置模块,datetime是Python处理日期和时间的标准库. 1,导入时间模块 from datetime import datetime 2,实例 from ...
- 浅谈Python时间模块
浅谈Python时间模块 今天简单总结了一下Python处理时间和日期方面的模块,主要就是datetime.time.calendar三个模块的使用.希望这篇文章对于学习Python的朋友们有所帮助 ...
- (转)python time模块和datetime模块详解
python time模块和datetime模块详解 原文:http://www.cnblogs.com/tkqasn/p/6001134.html 一.time模块 time模块中时间表现的格式主要 ...
- python时间处理之datetime
python时间处理之datetime 标签: pythondateimportstringc 2012-09-12 23:21 20910人阅读 评论(0) 收藏 举报 分类: Python系列( ...
- python 时间模块time,datetime详细介绍
模块(module)是 Python 中非常重要的东西,你可以把它理解为 Python 的扩展工具.换言之,Python 默认情况下提供了一些可用的东西,但是这些默认情况下提供的还远远不能满足编程实践 ...
- Python模块 - time,datetime,calendar
time模块 localtime 当前时间的struct_time形式 >>> time.localtime() time.struct_time(tm_year=2015, tm_ ...
- python 时间模块time,datetime
模块(module)是 Python 中非常重要的东西,你可以把它理解为 Python 的扩展工具.换言之,Python 默认情况下提供了一些可用的东西,但是这些默认情况下提供的还远远不能满足编程实践 ...
随机推荐
- C#通过窗体属性缩小一定尺寸时,无法再缩小窗体尺寸问题
问题:通过窗体属性缩小窗体尺寸时,发现改变到一定大小时无法再缩小.条件:在代码中设置窗体的尺寸由窗体属性里设置的宽高决定,但实际通过窗体属性设置窗体大小,一定大小时无法再缩小,那是因为我们没有把窗体属 ...
- 48.Linux-普通U盘以及多分区U盘自动挂载
在上章学习33.Linux-实现U盘自动挂载(详解)后,只是讲解了普通U盘挂载,并没有涉及到多分区U盘,接下来本章来继续学习 1.多分区U盘和普通U盘区别 1)U盘插上只会创建一个/dev/sda文件 ...
- IDEA插件(Android Studio插件)开发示例代码及bug解决
IDEA插件(Android Studio插件)开发示例代码及bug解决 代码在actionPerformed方法中,有个AnActionEvent e 插件开发就是要求我们复写上述的这个方法即可,在 ...
- mysql date_add()函数的使用
date_add(date,interval expr type) 类型(type) expr参数格式 说明 MICROSECOND 数值类型 以微妙为计算单位 SECOND 数值类型 以秒为计 ...
- git入门 多人协作
当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin. 要查看远程库的信息,用git remote: $ git r ...
- IE6不兼容问题
IE6不兼容问题 一.选择器兼容问题 1.交集选择器从IE7以上兼容(div.special): 2.儿子选择器(>):IE7开始兼容,IE6不兼容. 3.序选择器(first ...
- 洛谷P2421 [NOI2002]荒岛野人(扩展欧几里得)
题目背景 原 A-B数对(增强版)参见P1102 题目描述 克里特岛以野人群居而著称.岛上有排列成环行的M个山洞.这些山洞顺时针编号为1,2,…,M.岛上住着N个野人,一开始依次住在山洞C1,C2,… ...
- Linux 进程调度的主要策略
1.Linux 下进程分为5种类别,分别是停止类.截止类.实时类.公平类.空闲类, 每种类别都有一个运行队列,每次调度时,就是先按照类别优先级排序,再按照每个类别内的最高优先级任务调度运行. 文件:c ...
- Python Elasticsearch批量操作客户端
基于Python实现的Elasticsearch批量操作客户端 by:授客 QQ:1033553122 1. 代码用途 1 2. 测试环境 1 3. 使用方法 1 3.1 配置ES服务器信息 1 ...
- WannaCry勒索比特币蠕虫病毒解决方案
WannaCry ransomware used in widespread attacks all over the world Customer Guidance for WannaCrypt a ...