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# nginx 配置
listen ; #端口 server_name localhost; #域名可以有多个 用空格隔开 #charset koi8-r; #access_log logs/host.access.log ...
- 创建Aurelia项目
什么是Aurelia? Aurelia 是一个新的开源的,基于web标准的mvvm框架,是一个现代化的js模块的集合. Aurelia提供了丰富的plugin,例如国际化,验证,模态框,UI可视化等. ...
- PHP全路径无限分类导航LINK代码实现
<?php /** * @param php全路径无限分类 */ include('db.inc.php'); function getPathCate($cateid){ $sql = &qu ...
- xml方式封装数据方法
1.xml方式封装数据方法 2.demo <?php xml方式封装数据方法 /** * [xmlEncode description] * @param [type] $code [descr ...
- Eslint使用(webpack中使用)
一.安装 npm i -D eslint npm i babel-eslint \ eslint-config-airbnb \ // Airbnb的编码规范是在业界非常流行的一套规范 eslint- ...
- JS对url进行编码和解码(三种方式区别)
Javascript语言用于编码的函数,一共有三个,最古老的一个就是escape().虽然这个函数现在已经不提倡使用了,但是由于历史原因,很多地方还在使用它,所以有必要先从它讲起. escape 和 ...
- BZOJ1058: [ZJOI2007]报表统计(set)
Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 4190 Solved: 1420[Submit][Status][Discuss] Descript ...
- 洛谷P3199 [HNOI2009]最小圈(01分数规划)
题意 题目链接 Sol 暴力01分数规划可过 标算应该是这个 #include<bits/stdc++.h> #define Pair pair<int, double> #d ...
- 17.Odoo产品分析 (二) – 商业板块(10) – 电子商务(1)
查看Odoo产品分析系列--目录 安装电子商务模块 1. 主页 点击"商店"菜单: 2. 添加商品 在odoo中,你不用进入"销售"模块,再进入产品列表添加产 ...
- IDEA基于Maven Struts2搭建配置及示例
1.web.xml加载struts框架即过滤器,要注意struts版本不同过滤器配置也不同. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems ...