datetime模块

datetime模块提供了一些处理日期和时间的标准库。常用的有

  • datetime
  • timedelta
  • timezone

构造一个datetime对象

  1. datetime()

    datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0);

    比如:d = datetime.datetime(2012, 12, 22, 19, 29, 29, 99999)

  2. datetime.today()

    返回一个本地时间的datetime对象,tzinfo为None。

  3. datetime.now(tz=None)

    返回一个datetime对象,若tz=None,等于datetime.today().若指定tz,则返回带tzinfo的datetime对象.

  4. datetime.utcnow()

    返回一个tz为None,时间为格林威治时间的datetime对象。

  5. datetime.fromtimestamp(timestamp,tz=None)

    从timestamp中返回一个datetime对象;默认时区为None

  6. datetime.strptinm(date_string,format)

    从date_string中返回一个datetime对象

    Return a datetime corresponding to date_string, parsed according to format.

对于tzinfo为None的datetime对象,在进行时间转换时,会以计算机系统设置的时区作为参考时区。

  1. datetime() 创建一个datetime对象
>>> import datetime
>>> d = datetime.datetime(2012,12,22,23,59,59,9999)
>>> d
datetime.datetime(2012, 12, 22, 23, 59, 59, 9999)
  1. datetime.today()创建一个datetime对象
>>> import datetime
>>> d = datetime.datetime.today()
>>> d
datetime.datetime(2018, 8, 17, 12, 5, 16, 535649)
  1. datetime.now()创建一个datetime对象
>>> import datetime
>>> d = datetime.datetime.now()
>>> d
datetime.datetime(2018, 8, 17, 12, 6, 0, 501210)
#创建一个带有tz的对象
>>> tzx = datetime.timezone(datetime.timedelta(hours=1))
>>> d = datetime.datetime.now(tz=tzx)
>>> d
datetime.datetime(2018, 8, 17, 5, 7, 46, 49701, tzinfo=datetime.timezone(datetime.timedelta(0, 3600)))
  1. datetime.utcnow()创建一个格林威治时间时区为None的datetime对象
>>> import datetime
>>> d = datetime.datetime.utcnow()
>>> d
datetime.datetime(2018, 8, 17, 4, 10, 28, 276769)
#创建一个带格林威治时间的datetime对象
>>> tzx = datetime.timezone(datetime.timedelta(hours=0))
>>> d=datetime.datetime.now(tz=tzx)
>>> d
datetime.datetime(2018, 8, 17, 4, 10, 41, 417900, tzinfo=datetime.timezone.utc)
  1. datetime.fromtimestamp()创建一个datetime对象
>>> import datetime
>>> ts=1
>>> d = datetime.datetime.fromtimestamp(ts)
>>> d
datetime.datetime(1970, 1, 1, 8, 0, 1)
>>> tzx = datetime.timezone(datetime.timedelta(hours=1))
>>> d = datetime.datetime.fromtimestamp(ts,tz=tzx)
>>> d
datetime.datetime(1970, 1, 1, 1, 0, 1, tzinfo=datetime.timezone(datetime.timedelta(0, 3600)))
  1. datetime.strptinme()创建一个datetime对象
>>> import datetime
>>> ds = '2018/8/17 14:00:00'
>>> d = datetime.datetime.strptime(ds,'%Y/%m/%d %H:%M:%S')
>>> d
datetime.datetime(2018, 8, 17, 14, 0)
>>> d = datetime.datetime.strptime(ds,'%Y/%m/%d %H:%M:%s')

datetime对象属性和方法(attribute and mothod)

  1. 对象的属性year, month, day, hour, minute,second, microsecond, tzinfo;返回对象的相关属性
  2. weekday()返回星期的天(周一0,周日6)
  3. isoweekday() 返回星期的天(周一1,周日7)
  4. date() 返回一个timedate.data对象
  5. time()返回一个timedate.time对象
  6. isocalendar() 返回一个三元组(年,周,周的天)
  7. timestamp()返回时间戳
  8. replace() 返回一个新的datetime对象,原对象不变
  9. strftime() 返回一个指定fromat的时间字符串对象
  10. ctime() 返回时间的字符串对象

几个示例:

>>> import datetime
>>> tzx = datetime.timezone(datetime.timedelta(hours=1))
>>> d = datetime.datetime.now(tz=tzx)
>>> d
datetime.datetime(2018, 8, 17, 7, 6, 6, 658467, tzinfo=datetime.timezone(datetime.timedelta(0, 3600)))
>>> d.day
17
>>> d.tzinfo
datetime.timezone(datetime.timedelta(0, 3600))
>>> d.time()
datetime.time(7, 6, 6, 658467)
>>> d.timestamp()
1534485966.658467
>>> d.ctime()
'Fri Aug 17 07:06:06 2018'
>>> d.strftime('%Y-%m-%d %H:%M:%S')
'2018-08-17 07:06:06'
>>> d.replace(hour=13)
datetime.datetime(2018, 8, 17, 13, 6, 6, 658467, tzinfo=datetime.timezone(datetime.timedelta(0, 3600)))

格式转换

对前面的方法进行整理

  1. timestamp到datetime的相互转换

    datetime.datetime.fromtimestamp()

    d.timestamp()

  2. date_string到datetime的相互转换

    datetime.strptime(date_time,format)

    d.strftime(format)

  3. 使用字符串format获取datetime的字符串形式

>>> d = datetime.datetime.fromtimestamp(1)
>>> d
datetime.datetime(1970, 1, 1, 8, 0, 1)
>>> d.timestamp()
1.0

>>> d = datetime.datetime.strptime('2018/1/1 12:00:00', '%Y/%m/%d %H:%M:%S')
>>> d.strftime('%x %X')
'01/01/18 12:00:00'

>>> d = datetime.datetime.strptime('2018/1/1 12:00:00', '%Y/%m/%d %H:%M:%S')
>>> '{0:%H}:{0:%M}:{0:%S}'.format(d)
'12:00:00'

time的常用格式

格式 说明
%Y 年份(2018)
%y 年份(18)
%m
%d
%H 小时
%M 分钟
%S
%X 时:分:秒

datetime的加减

datetime的加减,需要另外一个类:timedelta

timedelta对象的获取

  1. 两个datetime相减,得到timelta对象
  2. 使用timelte函数定义一个timedelta对象
>>> import datetime
>>> d1 = datetime.datetime.now()
>>> d2 = datetime.datetime.now()
>>> dd = d2 - d1
>>> dd
datetime.timedelta(0, 30, 702676)
>>> dd = datetime.timedelta(hours=2)
>>> dd
datetime.timedelta(0, 7200)
>>>

timedelta的作用

  1. 时间的加减
  2. 时间差的获取
  3. 时区

  1. 时间的加减

    datetime2 = datetime1 + timedelta

    datetime1 = datetime2 - timedelta

    timedelta = datetime2 - datetime1

  2. 时间差的获取

    timedelta.seconds() 获取秒数

    timedelta.totalseconds() 获取时间差,精确到微妙

  3. 创建时区

    datetime.timezone(datetime.timedelta(hours=8))

datetime模块的常用总结的更多相关文章

  1. 常用模块 - datetime模块

    一.简介 datetime是Python处理日期和时间的标准库. 1.datetime模块中常用的类: 类名 功能说明 date 日期对象,常用的属性有year, month, day time 时间 ...

  2. Python的time和datetime模块

    Python的time和datetime模块 time 常用的有time.time()和time.sleep()函数. import time print(time.time()) 149930555 ...

  3. [ Python入门教程 ] Python中日期时间datetime模块使用实例

    Python中datetime模块提供强大易用的日期处理功能,用于记录程序操作或修改时间.时间计算.日志时间显示等功能.datatime模块重新封装了time模块,提供的类包括date.time.da ...

  4. python-Day5-深入正则表达式--冒泡排序-时间复杂度 --常用模块学习:自定义模块--random模块:随机验证码--time & datetime模块

    正则表达式   语法:             mport re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0 ...

  5. Python全栈之路----常用模块----datetime模块详解

    相比于time模块,datetime模块的接口则更直观,更容易调用. datetime模块定义了下面这几个类: datetime.date:表示日期的类,常用的属性有year,month,day: d ...

  6. python常用模块之time&datetime模块

    python常用模块之time&datetime模块 在平常的代码中,我们经常要与时间打交道.在python中,与时间处理有关的模块就包括:time和datetime,下面分别来介绍: 在开始 ...

  7. python进阶06 常用问题库(2)datetime模块 base64

    python进阶06 常用问题库(2)datetime模块 base64 一.datetime模块(时间) 1.datetime.time() t=datetime.time(20,43,30,1) ...

  8. python常用模块:项目目录规范、定制程序入口、自定义模块、引用变量、time和datetime模块

    今天讲课内容有两大部分: 一.文件目录规范二.定制程序入口三.使用标准目录后四.常规函数time.datetime 一.标准目录规范 之前用过的案例atm机+购物商城代码过长,在学习了模块和包以后,我 ...

  9. python中datetime模块

    Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块我在之前的文章已经有所介绍,它提供 的接口与C标准库time.h基本一致.相比于time模块 ...

随机推荐

  1. 牛客小白月赛12-C(欧拉筛解积性方程)

    题目链接:https://ac.nowcoder.com/acm/contest/392/C 题意:给定n,求: 思路:令res[i]=iN  (%MOD),因为xn是一个积性函数,即(x*y)n=x ...

  2. 微信多开脚本(Windows,Mac)

    微信多开 以下内容仅用于学习使用.严禁用于非法用途,违者自负. Windows 多开 Windows 版本的微信在一些比较新的版本好像限制了多开,我们这里提供一个版本(也是官方的).https://p ...

  3. 并发编程 深入分析Volatile的实现原理

    在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”.可见性的意思是当一个线 ...

  4. # 匈牙利算法(二分图最大匹配)- hdu 过山车

    匈牙利算法(二分图最大匹配)- hdu 过山车 Hdu 2063 二分图:图中的点可以分成两组U,V,所有边都是连接U,V中的顶点.等价定义是:含奇数条边的图. 匹配:一个匹配是一个边的集合,其中任意 ...

  5. CSP 最大的矩形(201312-3)

    问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi.这n个矩形构成了一个直方图.例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3 ...

  6. 用python操作mysql数据库

    数据库的安装和连接 PyMySQL的安装 pip install PyMySQL python连接数据库 import pymysql db = pymysql.connect("数据库ip ...

  7. HTML5自学

    1.1   标题文本 在HTML5中,文本的结构除了以行和段落出现之外,还可以作为标题存在,通常一篇文档最基本的结构就是由不同级别的标题和正文组成的. 例如1:(中国门户网站) https://www ...

  8. 实现远程线程DLL注入

    ### 32位:远程线程注入 远程线程注入是最常用的一种注入技术,该技术利用的核心API是 `CreateRemoteThread()` 这个API可以运行远程线程,其次通过创建的线程调用 `Load ...

  9. Peter and Snow Blower CodeForces - 613A (点到线段距离)

    大意: 给定多边形, 给定点$P$, 求一个以$P$为圆心的最小的圆环包含整个多边形. #include <iostream> #include <cmath> #define ...

  10. wex5 baasData规则和绑定 学习

    1 在baasData新建一个计算列 2 点击编辑规则,左边选择该计算列, 右边点击计算后面的设置 3 写规则的逻辑 好像不能用if 只能用三目运算符 4 绑定样式和文本的时候 这么用: