python 时间模块time,datetime
模块(module)是 Python 中非常重要的东西,你可以把它理解为 Python 的扩展工具。换言之,Python 默认情况下提供了一些可用的东西,但是这些默认情况下提供的还远远不能满足编程实践的需要,于是就有人专门制作了另外一些工具。这些工具被称之为“模块”
任何一个 Pythoner 都可以编写模块,并且把这些模块放到网上供他人来使用。
当安装好 Python 之后,就有一些模块默认安装了,这个称之为“标准库”,“标准库”中的模块不需要安装,就可以直接使用。
如果没有纳入标准库的模块,需要安装之后才能使用。模块的安装方法,我特别推荐使用 pip 来安装。
在平常的代码中,我们常常需要与时间打交道。在Python中,与时间处理有关的模块就包括:time,datetime,calendar(很少用,不讲),下面分别来介绍。
在开始之前,首先要说明几点:
一、在Python中,通常有这几种方式来表示时间:
- 时间戳
- 格式化的时间字符串
- 元组(struct_time)共九个元素。(由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。)
二、几个定义
UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时。
时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。下面列出这种方式元组中的几个元素:
索引(Index) 属性(Attribute) 值(Values)
0 tm_year(年) 比如2011
1 tm_mon(月) 1 - 12
2 tm_mday(日) 1 - 31
3 tm_hour(时) 0 - 23
4 tm_min(分) 0 - 59
5 tm_sec(秒) 0 - 61
6 tm_wday(weekday) 0 - 6(0表示周日)
7 tm_yday(一年中的第几天) 1 - 366
8 tm_isdst(是否是夏令时) 默认为-1
三,time模块的方法
3.1 常用函数
time.localtime([secs]):将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。 time.gmtime([secs]):和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。 time.time():返回当前时间的时间戳。 time.mktime(t):将一个struct_time转化为时间戳。 time.sleep(secs):线程推迟指定的时间运行。单位为秒。 time.asctime([t]):把一个表示时间的元组或者struct_time表示为这种形式:'Sun Oct 1 12:04:38 2017'。如果没有参数,将会将time.localtime()作为参数传入。 time.ctime([secs]):把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。 time.strftime(format[, t]):把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。
举例用法:
import time
# time模块的方法
# time.localtime([secs]):将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。
print(time.localtime())
# time.struct_time(tm_year=2018, tm_mon=3, tm_mday=13, tm_hour=13, tm_min=44, tm_sec=0, tm_wday=1, tm_yday=72, tm_isdst=0) # time.gmtime([secs]):和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。
print(time.gmtime())
# time.struct_time(tm_year=2018, tm_mon=3, tm_mday=13, tm_hour=5, tm_min=49, tm_sec=16, tm_wday=1, tm_yday=72, tm_isdst=0) # time.time():返回当前时间的时间戳。
print(time.time())
# 1520920188.7989295 # time.mktime(t):将一个struct_time转化为时间戳。
a = time.localtime()
print(time.mktime(a)) # time.sleep(secs):线程推迟指定的时间运行。单位为秒。
time.sleep(0.1)
print("hello world") # time.asctime([t]):把一个表示时间的元组或者struct_time表示为这种形式:
# 'Sun Oct 1 12:04:38 2017'。如果没有参数,将会将time.localtime()作为参数传入。
a = time.localtime()
print(time.asctime(a)) # time.ctime([secs]):把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。
# 如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
print(time.ctime()) # time.strftime(format[, t]):把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)
# 转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。
print(time.strftime("%Y-%m-%d %X", time.localtime()) )
#输出2018-03-13 14:22:13 # time.strptime(string[, format]):把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
print(time.strftime("2018-03-13 14:26:23"))
# 2018-03-13 14:26:23
3.2 time模块常用的格式化字符串
格式 | 说明 |
---|---|
%a | 显示简化星期名称 |
%A | 显示完整星期名称 |
%b | 显示简化月份名称 |
%B | 显示完整月份名称 |
%c | 本地相应的日期和时间表示 |
%d | 显示当月第几天 |
%H | 按24小时制显示小时 |
%I | 按12小时制显示小时 |
%j | 显示当年第几天 |
%m | 显示月份 |
%M | 显示分钟数) |
%p | 本地am或者pm的相应符 |
%S | 显示秒数) |
%U | 一年中的星期数 |
%w | 显示在星期中的第几天,默认从0开始表示周一 |
%W | 和%U基本相同 |
%x | 本地相应日期 |
%X | 本地相应时间 |
%y | 去掉世纪的年份(00 - 99) |
%Y | 完整的年份 |
%Z | 时区的名字(如果不存在为空字符) |
%% | ‘%’字符 |
3.3 时间函数之间的转化关系
四,datetime模块的方法
相对于time 模块,datetime模块的接口则更直观,更容易调用
4.1datetiem模块定义了下面这几个类:
datetime.date:表示日期的类。常用的属性有year, month, day;
datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
datetime.datetime:表示日期时间。
datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
datetime.tzinfo:与时区有关的相关信息。(这里不详细充分讨论该类,感兴趣的童鞋可以参考python手册)
我们需要记下下面几个方法就ok
-————1,d=datetime.datetime.now() 返回当前的datetime日期类型
d.timestamp(),d.today(), d.year,d.timetuple()等方法可以调
import datetime
d = datetime.datetime.now()
print(d)
d1 = d.time()
print(d1)
d2 =d.today()
print(d2)
d3 = d.year
print(d3)
d4 = d.timestamp()
print(d4)
d5 = d.timetuple()
print(d5)
# 2018-03-13 14:46:13.649710
# 14:46:13.649710
# 2018-03-13 14:46:13.649710
# 2018
# 1520923573.64971
# time.struct_time(tm_year=2018, tm_mon=3, tm_mday=13, tm_hour=14, tm_min=46, tm_sec=13, tm_wday=1, tm_yday=72, tm_isdst=-1)
————2.datetime.date.fromtimestamp(322222) 把一个时间戳转为datetime日期类型
import datetime
import time d = datetime.date.fromtimestamp(0)
print(d)
# 1970-01-01
d =time.time()
d1 = datetime.date.fromtimestamp(d)
print(d1)
# 2018-03-13
————3.时间运算(datetime.timedelta)
# 3时间运算
import datetime d = datetime.datetime.now()
print(d)
# 2018-03-13 14:51:02.755716 d1 = datetime.datetime(2017, 10, 1, 12, 53, 11, 821218)
print(d1)
# 2017-10-01 12:53:11.821218 d2 = datetime.datetime.now() + datetime.timedelta(4) #当前时间 +4天
print(d2)
# 2018-03-17 14:51:53.457663 d3 = datetime.datetime(2018, 3, 12, 14, 52, 35, 276589)
print(d3)
# 2018-03-12 14:52:35.276589 d4 = datetime.datetime.now() + datetime.timedelta(hours=4) #当前时间+4小时
print(d4)
# 2018-03-13 18:53:08.109074
————4,时间替换
# 4时间替换
import datetime
d = datetime.datetime.now()
print(d)
d1 = d.replace(year=2999,month=11,day=30)
print(d1)
d2 = datetime.date(2999, 11, 30)
print(d2)
# 2018-03-13 14:56:16.880071
# 2999-11-30 14:56:16.880071
# 2999-11-30
4.2 date类
date类表示一个日期。日期由年、月、日组成(地球人都知道~~)。date类的构造函数如下:
date.min: 返回 date(MINYEAR, 1, 1).
date.max: 返回 date(MAXYEAR, 12, 31).
date.year: 返回 年, MINYEAR和MAXYEAR之间
date.month: 返回 月, 1到12月之间
date.day: 返回 1到 n 之间.
- year的范围是[MINYEAR, MAXYEAR],即[1, 9999];
- month的范围是[1, 12]。(月份是从1开始的,不是从0开始的_);
- day的最大值根据给定的year, month参数来决定。例如闰年2月份有29天;
- date类定义了一些常用的类方法与类属性,方便操作:
- date.max、date.min:date对象所能表示的最大、最小日期;
- date.resolution:date对象表示日期的最小单位。这里是天。
- date.today():返回一个表示当前本地日期的date对象;
- date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;
4.3 实例方法
date.replace(year, month, day):返回一个相同值的data对象, 除了这些参数给关键字指定新的值.
date.timetuple(): 返回一个time.struct_time对象.
date.toordinal(): 返回一个Gregoian Calendar对象.
date.weekday(): 返回day of the week. 星期一为0,星期日为6.
date.isoweekday(): 返回day of the week. 星期一为1,星期日为7.
date.isocalendar(): 返回一个三元组, (ISO year, ISO week number, ISO weekday).
date.isoformat(): 返回 一个'YYYY-MM-DD'的字符串格式.
date.ctime(): 返回一个字符串日期, d.ctime() 等同于 time.ctime(time.mktime(d.timetuple())).
date.strftime(format): 返回一个字符串日期, 格式自定义.
python 时间模块time,datetime的更多相关文章
- python 时间模块(time ,datetime,calendar)
Python中提供了时间相关的内置模块,我们主要用的是:time模块.datetime模块和calendar模块 ⽇期格式化的标准: %y 两位数的年份表示(00-99) %Y 四位数的年份表示(00 ...
- 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
时间模块 python 中时间表示方法有:时间戳,即从1975年1月1日00:00:00到现在的秒数:格式化后的时间字符串:时间struct_time 元组. struct_time元组中元素主要包括 ...
- python 时间模块time,datetime详细介绍
模块(module)是 Python 中非常重要的东西,你可以把它理解为 Python 的扩展工具.换言之,Python 默认情况下提供了一些可用的东西,但是这些默认情况下提供的还远远不能满足编程实践 ...
- python时间模块datetime
datetime模块 datetime在python中比较常用,主要用来处理时间日期,使用前先倒入datetime模块.下面总结下本人想到的几个常用功能. 1.当前时间(日期.小时.字符串时....) ...
随机推荐
- Maven捆绑TestNG实现测试自动化执行、部署和调度
一. 需求介绍 自动化测试,尤其是接口测试时,要写大量的测试用例,这些测试用例我们当然首选使用TesteNG编写,用例数量大,还涉及各种依赖包之类的问题,因此用Maven管理也是最方便最易实现的. 面 ...
- Xamarin常见问题
1. Could not locate Java 6 or 7 SDK. (Download from http://www.oracle.com/technetwork/java/javase/do ...
- 20145232韩文浩 《网络对抗技术》 Web安全基础实践
问题回答 SQL注入攻击原理?如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使 ...
- CentOS6.2上安装pip
如果yum install pip执行失败.按如下步骤执行 首先安装epel扩展源: yum -y install epel-release 然后执行yum --disablerepo=epel -y ...
- Snapshot Types
Volume managers Some Unix systems have snapshot-capable logical volume managers. These implement cop ...
- Redis Cluster [WARNING] Node 127.0.0.1:7003 has slots in migrating state (15495).
错误描述 在迁移一个节点上的slot到另一个节点的时候卡在其中的一个slot报错,截图如下: 查询发现在15495的这个slot上面存在一个key,但是并没有发现这个key有什么问题.使用fix进行修 ...
- Java 利用 UUID 生成唯一性 ID 示例代码
用户ID首先生成,订单ID的生成可依赖用户ID. 下面代码前六位是日期,后八位是随机数,用于生成用户ID. public String getNewUserId() { String ipAddres ...
- vim 行跳转和列跳转的方法
vim提供了丰富的快速跳转任意行.任意列的方法,方便高效地移动光标,定位文件位置. 一.Vim行跳转 使用vim查看文件时,使用以下命令可以快速跳转文件首.尾行,方便对整个文件有个全局把握. 1.1 ...
- Spring lazy-init 原理分析
普通的bean的初始化是在容器启动初始化阶段执行的,而被lazy-init修饰的bean 则是在从容器里第一次进行context.getBean(“”)时进行触发.Spring 启动的时候会把所有be ...
- [原创]K8Cscan插件之FTP弱口令扫描
[原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器?其实也是插件化,但C ...