datetime是Python处理日期和时间的标准库

获取当前的日期和时间

  1. from datetime import datetime
  2. now = datetime.now()
  3. print(now)
  4. print(type(now))

from datetime import datetime 第一个datetime是模块,第二个datetime是该模块下的类。

这个类下面的.now()返回当前日期和时间,其类型是datetime

如果只写import datetime。需要datetime.datetime.now()

获取指定日期和时间

  1. from datetime import datetime
  2. dt = datetime(2017,4,19,23,45)
  3. print(dt)

通过传入参数可直接获得指定的日期和时间

datetime转换为timestamp

1970年1月1日00:00:00 UTC+00:00时区的时刻称为epoch time,记为0。当前时间相对于epoch time的秒数,称为timestamp,1970年前的时间timestamp为负数 。

假定时间已校准,那么全球各地的计算机任意时刻的timestamp都是完全相同的,所以计算机存储的当前时间用timestamp表示。

调用timestamp()方法,将datetime转换成timestamp

  1. from datetime import datetime
  2. dt = datetime(2017,4,19,23,45)
  3. print(dt)
  4. ts = dt.timestamp()
  5. print(ts)

timestamp转换成datetime

  1. from datetime import datetime
  2. dt = datetime(2017,4,19,23,45)
  3. print(dt)
  4. ts = dt.timestamp()
  5. print(ts)
  6. print(datetime.fromtimestamp(ts))
  7. print(datetime.utcfromtimestamp(ts))

使用fromtimestamp()可将timestamp转换成本地时间

使用utcfromtmestamp()可将timestamp转成成utc时间

因为北京是utc+8:00,所以utc时间会减少八小时

str转换成datetime

  1. from datetime import datetime
  2. times = '2015-12-24 18:29:30'
  3. print(type(times))
  4. cd = datetime.strptime(times,'%Y-%m-%d %H:%M:%S')
  5. print(type(cd))

通过datetime.strptime()实现,需要一个日期和时间的格式化字符串,格式可参考python文档。转换后的datetime没有时区信息

datetime转换成str

  1. from datetime import datetime
  2. now = datetime.now()
  3. print(now.strftime('%a, %b %d %H:%M:%S'))

使用strftime()可将datetime转换成对应格式的str

datetime加减

  1. from datetime import datetime,timedelta
  2. now = datetime.now()
  3. print(now)
  4. print(now+timedelta(days=1,hours=10))

通过timedelta类,使用+,- 可计算前几天或后几天的时间

本地时间转换为utc时间

本地时间是指系统设置时区的时间,比如北京时间是UTC+8:00时区的时间,而UTC时间是指UTC+0:00的时间

datetime类型有时区属性tzinfo,但是默认为None,可以通过给date设置时区来区分哪个时区

  1. from datetime import datetime,timedelta,timezone
  2. tz = timezone(timedelta(hours=8))#创建时区UTC+8:00
  3. now = datetime.now()
  4. print(now)
  5. dt = now.replace(tzinfo=tz)#设置为UTC+8:00
  6. print(dt)

时区转换

  1. from datetime import datetime,timedelta,timezone
  2. utc = datetime.utcnow().replace(tzinfo = timezone.utc)#拿到当前utc时间,并将时区设置为utc+0:00
  3. print(utc)
  4. bj = utc.astimezone(timezone(timedelta(hours=8)))#将时区转换为北京时间
  5. print(bj)

使用utcnow()可获得当前utc时间,使用带时区的datetime,通过astimezone()方法,可以转换到任意时区

练习

假设你获取了用户输入的日期和时间如2015-1-21 9:01:30,以及一个时区信息如UTC+5:00,均是str,请编写一个函数将其转换为timestamp:

  1. from datetime import datetime, timezone, timedelta
  2.  
  3. def to_timestamp(dt_str, tz_str):
  4. time1 = datetime.strptime(dt_str,'%Y-%m-%d %H:%M:%S')
  5. hours = int(tz_str[3:tz_str.index(':')])
  6. tz = timezone(timedelta(hours=hours))
  7. dt = time1.replace(tzinfo=tz)
  8. return dt.timestamp()
  9.  
  10. t1 = to_timestamp('2015-6-1 08:10:30', 'UTC+7:00')
  11. assert t1 == 1433121030.0, t1
  12.  
  13. t2 = to_timestamp('2015-5-31 16:10:30', 'UTC-09:00')
  14. assert t2 == 1433121030.0, t2
  15.  
  16. print('ok')

Python3学习笔记30-datetime模块的更多相关文章

  1. Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

    Python3学习笔记(urllib模块的使用)   1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None,  ...

  2. Python3学习笔记(urllib模块的使用)

    转载地址:https://www.cnblogs.com/Lands-ljk/p/5447127.html 1.基本方法 urllib.request.urlopen(url, data=None,  ...

  3. 【转】Python3学习笔记(urllib模块的使用)

    原文地址:https://www.cnblogs.com/Lands-ljk/p/5447127.html 1.基本方法 urllib.request.urlopen(url, data=None,  ...

  4. python3学习笔记(7)_listComprehensions-列表生成式

    #python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...

  5. python3学习笔记(6)_iteration

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...

  6. Python3学习笔记 - 准备环境

    前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...

  7. python3学习笔记(5)_slice

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...

  8. Python3学习笔记(十五):常用时间模块time和datetime

    一.time模块 1.时间戳 time.time() :从1970-01-01到至今的秒数 import time print(time.time()) 1529238004.2784646 2.等待 ...

  9. Python学习笔记:time模块和datetime模块(时间和日期)

    time模块 time模块通常用来操作时间戳信息(各种“秒”),常用的方法有: time.sleep(seconds):将当前程序阻塞指定秒数,然后继续运行程序. time.time():返回当前时间 ...

  10. python自动化测试学习笔记-5常用模块

    上一次学习了os模块,sys模块,json模块,random模块,string模块,time模块,hashlib模块,今天继续学习以下的常用模块: 1.datetime模块 2.pymysql模块(3 ...

随机推荐

  1. MySql 游标笔记

    delimiter &&create PROCEDURE findProjectDetailsByProjectId(in p_userId int)BEGIN   DECLARE d ...

  2. C#设计模式(1)——简单工厂模式

    1.什么是简单工厂 现实中的工厂负责生产产品,顾名思义,编程中的简单工厂就是一个生产对象的类,它的主要作用是创建具体的产品类实例.我们以一个生产鼠标为例来分析简单工厂的作用,鼠标有两种:戴尔鼠标和惠普 ...

  3. js学习总结:DOM节点一(选择器,节点类型)

    DOM:document object model 文档对象模型 DOM就是整个HTML文档的关系图谱(代表整个HTML文档),可以理解为下图: 一.查看元素节点 1.document.getElem ...

  4. BIO和NIO

    在了解BIO,NIO,AIO之前先了解一下IO的几个概念:   1.同步与异步 同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous com ...

  5. HDU 1033(坐标移动 模拟)

    题意是说有一点从(300,410)的位置出发,向右移动到(310,410)后开始转向,A 表示向顺时针转,V 表示向逆时针转,每次转向后沿当前方向前进 10 个单位, 输出其坐标,再补充一点格式上的东 ...

  6. springBoot中实现自定义属性配置、实现异步调用、多环境配置

    springBoot中其他相关: 1:springBoot中自定义参数: 1-1.自定义属性配置: 在application.properties中除了可以修改默认配置,我们还可以在这配置自定义的属性 ...

  7. matlab二维绘图学习摘要

      1.二维图形plot plot(x1,y1,x2,y2) —— 多条曲线绘图格式 plot(x,y,’s’) —— 开关格式,开关量字符串s设定曲线颜色和绘图方式,使用颜色字符串的前1~3个字母, ...

  8. kindeditor编辑器上传图片

    使用的是asp.net MVC 上传图片. 1.下载Kindeditor的对应的包 2.html页面 @{ Layout = null; } <!DOCTYPE html> <htm ...

  9. JDK自带的LinkedHashMap来实现LRU算法

    1 代码如下 public class LRULinkedHashMap<K, V> extends LinkedHashMap<K, V> { private final i ...

  10. jira和svn关联后,不显示Subversion Commits标签或不显示svn提交信息

    1.jira的版本是7.3.6 2.不显示Subversion Commits标签或不显示svn提交信息 其实是权限的分配问题 3.管理员登录 找到对应项目的权限管理 4.[评论权限]——[编辑所有评 ...