Python_datetime模块
datetime模块重新封装了time模块,提供更多的接口,提供的类有:
- date,表示日期的类
- time,表示时间的类
- datetime,表示日期和时间的类
- timedelta,表示时间间隔,即两个时间点的间隔
- tzinfo,与时区有关的信息
( 这些类的对象都是不可变的 )
(类有类方法,类方法里有方法,方法继承了类方法)
1、date类
datetime.date(year,month,day)
常用的类方法与属性:
| date.max | 对象所能表示的最大日期(9999-12-31) |
| date.min | 对象所能表示的最小日期(0001-01-01) |
| date.today() | 返回一个表示当前本地时间的date对象 |
| date.resolution | date对象表示日期的最小单位(天) |
| date.fromtimestamp(timestamp) | 根据给定的时间戳,返回一个date对象 |
实现:
import datetime
import time
print(datetime.date.max)
print(datetime.date.min)
print(datetime.date.today())
print(datetime.date.resolution)
print(datetime.date.fromtimestamp(time.time()+3600000)) # 给定时间戳的 日期
类方法
9999-12-31
0001-01-01
2018-09-17
1 day, 0:00:00
2018-10-29
result
其中常用的方法与属性:
| d.year | 年 |
| d.month | 月 |
| d.day | 日 |
| d.replace(year[,month[,day]]) | 生成并返回一个新的日期对象,原日期对象不变 |
| d.timetuple() | 返回日期对应的时间元组(time.struct_time)对象 |
| d.toordinal() | 返回日期是自0001-01-01开始的第多少天 |
| d.weekday() | 返回日期是星期几,[0,6],0表示星期一,1表示星期二 |
| d.isoweekday() | 返回日期是星期几,[1,7],1表示星期一,2表示星期二 |
| d.isocalendar() | 返回格式为(year,weekday,isoweekday)的元组 |
| d.isoformat() | 返回‘YYYY-MM-DD’格式的日期字符串 |
| d.strftime() | 自定义格式化字符串(和time模块的strftime()方法相同) |
实现:
print(datetime.date.year) # <attribute 'year' of 'datetime.date' objects>
print(datetime.date.today().year) # 本地时时间的年
print(datetime.date.fromtimestamp(time.time()+3600000).month) # 给定时间戳的 月
print(datetime.date.today().day) # 日 print(datetime.date.today().replace(year=2019))
print(datetime.date.today().timetuple())
print(datetime.date.today().toordinal())
print(datetime.date.today().weekday())
print(datetime.date.today().isoweekday())
print(datetime.date.today().isocalendar())
print(datetime.date.today().isoformat())
print(datetime.date.today().strftime('%Y-%m-%d-%a-%I'))
方法
<attribute 'year' of 'datetime.date' objects>
2018
10
17
2019-09-17
time.struct_time(tm_year=2018, tm_mon=9, tm_mday=17, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=260, tm_isdst=-1)
736954
0
1
(2018, 38, 1)
2018-09-17
2018-09-17-Mon-12
result
2、time类
其中,time类和time模块各自独立
datetime.time(hour[,minute[,decond[,microsecond[,tzinfo]]]])
常用的类方法与属性:
| time.max | 表示的最大时间 |
| time.min | 表示的最小时间 |
| time.resolution | 时间的最小单位,这里是1微秒 |
常用的方法与属性:
| t.hour | 时 |
| t.minute | 分 |
| t.second | 秒 |
| t.microsecond | 微秒 |
| t.tzinfo | 时区信息 |
| t.replace() | 用参数指定替代(时,分,秒,微秒,时区)对象,生成并返回新的对象 |
| t.isoformat() | 返回'HH:MM:SS'格式字符串 |
| t.strftime() | 返回自定义格式化字符串 |
3、datetime类
相当于date和time结合起来
datetime.datetime(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]]])
常用的类方法与属性:
| datetime.max | 最大日期 |
| datetime.min | 最小日期 |
| datetime.resolution | datetime对象所表示日期的最小单位,1微秒 |
| datetime.today() | 返回当前本地时间 |
| datetime.now([tz]) | 返回当前本地时间,如果指定tz,则返回tz时区当地时间 |
| datetime.utcnow() | 返回当前UTC时间 |
| datetime.fromtimestamp(timestamp[,tz]) | 根据给定的时间戳返回datetime对象,如果指定tz,则返回tz时区datetime对象 |
| datetime.utcfromtimestamp(timestamp) | 根据时间戳创建一个datetime对象 |
| datetime.combine(date,time) | 把指定的date和time对象整合为datetime对象 |
| datetime.strftime(date_string,format) | 将格式化字符串转换为datetime对象 |
import datetime
import time
print(datetime.datetime.resolution)
print(datetime.datetime.today())
print(datetime.datetime.now())
print(datetime.datetime.utcnow())
print(datetime.datetime.fromtimestamp(time.time()))
print(datetime.datetime.utcfromtimestamp(time.time()))
print(datetime.datetime.combine(datetime.date(2019, 3, 5), datetime.time(3, 2, 45)))
print(datetime.datetime.strftime(datetime.date(2019,9,2),'%Y-%m-%d %X'))
类方法
0:00:00.000001
2018-09-17 20:32:36.868500
2018-09-17 20:32:36.868500
2018-09-17 12:32:36.868500
2018-09-17 20:32:36.868500
2018-09-17 12:32:36.868500
2019-03-05 03:02:45
2019-09-02 00:00:00
result
其中常用的方法与属性:
|
dt.year dt.month dt.day |
年 月 日 |
|
dt.hour dt.minute dt.second |
时 分 秒 |
| dt.microsecond | 微妙 |
| dt.tzinfo | 时区信息 |
| dt.date() | 获取dt的date对象 |
| dt.time() | 获取dt的time对象,tzinfo 为none |
| dt.timetz() | 获取dt的time对象,tzinfo 为与datetime的tzinfo相同 |
| dt.replace() | 指定参数替代(年,月,日,时,分,秒,微妙,时区),生成并返回新对象 |
| dt.timetuple() | 返回日期时间对应的时间元组(time.struct_time)(不包括tzinfo) |
| dt.utctimetuple() | 返回UTC时间对应的时间元组(不包括tzinfo) |
| dt.timestamp() | 返回dt对象对应的时间戳 |
| dt.toordinal() | 返回日期是是自 0001-01-01 开始的第多少天(与date类相同) |
| dt.weekday() | 返回日期是星期几,[1, 7], 1表示星期一(与date类相同) |
| dt.isocalendar() | 返回格式如(year,month,day)的时间元组(与date类相同) |
| dt.isoformat() | 返回格式如'YYYY-MM-DD HH:MM:SS'的字符串 |
| dt.ctime() | 等价与time模块的time.ctime(time.mktime(d.timetuple())) |
| dt.strftime() | 返回指定格式的时间字符串 |
实现:
import datetime,time
print(datetime.datetime.today().tzinfo)
print(datetime.datetime.today().date())
print(datetime.datetime.today().time())
print(datetime.datetime.today().timetz())
print(datetime.datetime.today().timetuple())
print(datetime.datetime.today().timestamp())
print(datetime.datetime.today().ctime())
方法
None
2018-09-17
20:36:47.560500
20:36:47.560500
time.struct_time(tm_year=2018, tm_mon=9, tm_mday=17, tm_hour=20, tm_min=36, tm_sec=47, tm_wday=0, tm_yday=260, tm_isdst=-1)
1537187807.5605
Mon Sep 17 20:36:47 2018
result
4、timedelta类
时间加减(代表了两个datetime之间的时间差)
datetime.timedalta(days=0,seconds=0,microseconds=0,milliseconds=0,minutes=0 ,hours=0,weeks=0)
在日期上做天,小时,分钟,秒,毫秒,微秒,周 的时间计算
- 1毫秒转换为1000微秒
- 1分钟转换为60秒
- 1小时转换为3600秒
- 1周转换为7天
其中,timedelta内部只存储 days,seconds,microseconds
方法与属性:
| td.days | 天(范围[-999999999,999999999]) |
| td.seconds | 秒(范围[0,86399]) |
| td.microseconds | 微秒(范围[0,999999]) |
| td.total_seconds() | 以秒为单位返回该时间差 |
实现:
m = datetime.datetime.now()
print(m)
l = m + datetime.timedelta(3)
print(l)
n = m + datetime.timedelta(hours=4)
print(n)
span = l-m
print(span)
print(span.total_seconds())
方法
2018-09-17 16:38:43.021000
2018-09-20 16:38:43.021000
2018-09-17 20:38:43.021000
3 days, 0:00:00
259200.0
result
5、tzinfo时区类
其中,tzinfo是一个抽象类,所以不能直接被实例化
时间转换需要用datetime和pytz来转换时区
Python_datetime模块的更多相关文章
- python_datetime模块和time模块
1.datetime模块 获取当前时间: import datetime # 获取当前时间 ctime = datetime.datetime.now() print(ctime) 只显示:年-月-日 ...
- python标准库:datetime模块
原文地址:http://www.bugingcode.com/blog/python_datetime.html datatime 模块题共用一些处理日期,时间和时间间隔的函数.这个模块使用面向对象的 ...
- npm 私有模块的管理使用
你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- ES6模块import细节
写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...
- Python标准模块--ContextManager
1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...
- Python标准模块--Unicode
1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...
- Python标准模块--Iterators和Generators
1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...
- 自己实现一个javascript事件模块
nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...
随机推荐
- web中绝对路径换虚拟路径
最近在做一个web项目,将图片上传到服务器后,再访问时拿到的是绝对路劲,而需要的是虚拟路劲.经过一番折腾找到了下列方法可以直接转换. /// <summary> /// 将W ...
- python-进程池与线程池,协程
一.进程池与线程池 实现并发的手段有两种,多线程和多进程.注:并发是指多个任务看起来是同时运行的.主要是切换+保存状态. 当我们需要执行的并发任务大于cpu的核数时,我们需要知道一个操作系统不能无限的 ...
- 洛谷P3247 [HNOI2016]最小公倍数 [分块,并查集]
洛谷 思路 显然,为了达到这个最小公倍数,只能走\(a,b\)不是很大的边. 即,当前询问的是\(A,B\),那么我们只能走\(a\leq A,b\leq B\)的边. 然而,为了达到这最小公倍数,又 ...
- LuoGu P2420 让我们异或吧
其实......这就是个SB题,本来看到这个题,和树上路径有关 于是--我就欣喜地打了一个树剖上去,结果嘞,异或两遍等于没异或 所以这题和LCA屁关系都没有,所以这题就是个树上DFS!!!! 所以它为 ...
- Confluence 6 管理协同编辑 - 最大编辑者的限制
我们限制为最多 12 个用户可以同时对一个页面进行编辑.这个意味着当一个页面已经有 12 个用户正在编辑了,13 个用户是不能进入编辑界面的,直到 12 个用户中有一个用户已经离开了. 系统管理员可以 ...
- Confluence 6 SQL Server 测试你的数据库连接
在你的数据库设置界面,有一个 测试连接(Test connection)按钮可以检查: Confluence 可以连接你的数据库服务器 数据库字符集和隔离级别是正确的 你的数据库用户有正确的数据库权限 ...
- SpringBoot集成前端模版(thymeleaf)
1.在application.properties配置文件中添加 thymeleaf 的配置信息 spring.datasource.driverClassName=com.mysql.jdbc.Dr ...
- 第十九单元 nfs服务
===============服务端 介绍: NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过 ...
- pyhon----函数和方法的关系
1.如果使用类名调用,为函数,需要手动传self 2.如果使用对象调用,为方法,不用手动传self class Foo(object): def __init__(self): self.name=& ...
- uva11183 最小树形图模板题
很简单的模板题,不多说了 #include<iostream> #include<cstring> #include<cstdio> #define INF 0x3 ...