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模块的更多相关文章

  1. python_datetime模块和time模块

    1.datetime模块 获取当前时间: import datetime # 获取当前时间 ctime = datetime.datetime.now() print(ctime) 只显示:年-月-日 ...

  2. python标准库:datetime模块

    原文地址:http://www.bugingcode.com/blog/python_datetime.html datatime 模块题共用一些处理日期,时间和时间间隔的函数.这个模块使用面向对象的 ...

  3. npm 私有模块的管理使用

    你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...

  4. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  5. ES6模块import细节

    写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...

  6. Python标准模块--ContextManager

    1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...

  7. Python标准模块--Unicode

    1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...

  8. Python标准模块--Iterators和Generators

    1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...

  9. 自己实现一个javascript事件模块

    nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...

随机推荐

  1. 004_为什么不推荐APP使用SSL-PINNING

    背景 之前工作的经历,前面技术团队的APP使用了SSL-PINNING,服务器SSL证书到期前,测试环境更换证书,在更换配置OK后,发现APP停止服务了.所有的请求全部都失败. 后来查到是APP使用了 ...

  2. 下载chrome插件和离线安装CRX文件的方法

    自从chrome网上应用店出来后无法下载插件,必须在线安装,安装后又自动把CRX删除,而且是那么的迅速...以下是下载离线插件包的方法:第一步: 每个Google Chrome扩展都有一个固定的ID, ...

  3. 前端 -----jQuery的选择器

    02-jQuery的选择器   我们以前在CSS中学习的选择器有: 今天来学习一下jQuery 选择器. jQuery选择器是jQuery强大的体现,它提供了一组方法,让我们更加方便的获取到页面中的元 ...

  4. 【原创】大数据基础之Benchmark(1)HiBench

    HiBench 7官方:https://github.com/intel-hadoop/HiBench 一 简介 HiBench is a big data benchmark suite that ...

  5. 6)协程三( asyncio处理并发)

    一:使用 asyncio处理并发 介绍 asyncio 包,这个包使用事件循环驱动的协程实现并发.这是 Python 中最大也是最具雄心壮志的库之一. 二:示例 1)单任务协程处理和普通任务比较 #普 ...

  6. 如果Android真的收费了,你怎么看?

    前言 今天突然看到一群里有人发了下面这样一张图片,然后群里又炸了!   于是又和同事讨论了android收费的问题,然后隔壁正在玩农药的UI妹子就笑了... 没错! 安卓可能要收费了!安卓可能要收费了 ...

  7. Confluence 6 启用远程 API

    XML-RPC 和 SOAP 远程 API 从 Confluence 5.5 开始已经废弃了.我们推荐你使用完全支持的Confluence Server REST API. 希望启用 XML-RPC ...

  8. PDF如何添加水印,PDF添加水印工具的使用方法

    PDF文件在编辑修改的时候是需要借助工具才可以编辑,PDF文件不像普通的文件可以直接打开编辑,PDF编辑工具是PDF文件进行编辑的重要工具,就以添加水印为例,能够在PDF中添加水印的工具有哪些呢?要怎 ...

  9. java爬虫笔记

    一.URl解释 1.URl统一资源定位符, Uniform Resource Location 也就是说是Internet上信息资源的字符串,所谓的网页抓取就是把URl地址中指定的网络资源从网络中读取 ...

  10. java Web工程师面试题集绵

    一.Java 基础 1.JDK .JRE 和JVM关系是什么? 答:A. JDK(Java Development Kit)即Java开发工具包,包含编写Java程序所必须的编译.运行等开发工具以及J ...