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. (5.6)mysql高可用系列——MySQL Utilities 管理工具

    关键词:mysql工具集,mysql管理工具,mysql utilities [1]安装mysql utilities cd /download wget https://cdn.mysql.com/ ...

  2. Type类的使用

    Type类的使用(类反射)通过类获得Type: Type t = typeof(Person)通过实例对象获得类的Type: Type t = p.GetType()获取Type的方法:MethodI ...

  3. split、paste命令

    一.split分割文件 语法       split [OPTION] ... [INPUT [PREFIX]] 描述       将固定大小的INPUT输出到PREFIXaa,PREFIXab,.. ...

  4. 【深入理解JVM】类加载器与双亲委派模型 (转)

    出处: [深入理解JVM]类加载器与双亲委派模型 加载类的开放性 类加载器(ClassLoader)是Java语言的一项创新,也是Java流行的一个重要原因.在类加载的第一阶段“加载”过程中,需要通过 ...

  5. ajax实现异步操作实例1

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. 将Abp的UnitTest中的InMemory改为SQLite in memory

    添加nuget包 Microsoft.EntityFrameworkCore.Sqlite 添加ServiceCollectionRegistrarSqlite public static class ...

  7. vue中添加与删除,关键字搜索

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 跑满带宽的一款百度网盘下载工具 : PanDownload

    下载地址 : 点击进入 官网上面也有介绍使用.在这里,我再说一下 下载之后,解压,运行,登录, 登录好之后,准备进行设置 重要:下载情况分以下三部分 下载内容 < 300M,选择`打包下载`,只 ...

  9. symfony3 使用命令行工具生成Entity实体所踩的坑

    1.把配置文件汇总连接邮箱的配置信息注释掉了,在创建Entity时php bin/console doctrine:generate:entity报错 2. 错误原因是实体文件映射到数据库中的字段时候 ...

  10. git push 到 github

    今天来简单整理一下,如何利用git命令把代码提交到GitHub平台上去,当然要提交代码到GitHub上去,您首先得要有GitHub账号,账号如何申请这里就不多做解释了 第一步:先到官网下载git安装包 ...