python内置模块-datetime
摘录 廖雪峰网站
datetime是python内置的处理日期和时间的标准库
获取当前日期和时间
>>> from datetime import datetime
>>> print(datetime.now())
2018-04-08 23:07:58.547082
获取指定日期和时间
>>> dt = datetime(2017,4,8,23,10)
>>> print(dt)
2017-04-08 23:10:00
datetime转换为timestamp
实际上,计算机中都是用数字表示时间的。1970年1月1日 00:00:00 UTC+00:00时区的时刻称为epoch time,记为0(1970年以前的时间timestamp为负数),当前时间就是相对于epoch time的秒数,称为timestamp。
timestamp的值与时区毫无关系,因为timestamp一旦确定,其UTC时间就确定了,转换到任意时区的时间也是完全确定的,这就是为什么计算机存储的当前时间是以timestamp表示的,因为全球各地的计算机在任意时刻的timestamp都是完全相同的(假定时间已校准)。
标准的:
timestamp = 0 = 1970-1-1 00:00:00 UTC+0:00
对应的北京时间为:
timestamp = 0 = 1970-1-1 08:00:00 UTC+8:00
调用timestamp方法可以将一个datetime类型的数据转化为timestamp类型的数据:
>>> dt = datetime(2017,4,8,23,10)
>>> print(dt)
2017-04-08 23:10:00
>>> dt.timestamp()
1491664200.0
结果是一个浮点数,其中小数部分表示毫秒数。
timestamp转化为datetime
datetime的fromtimestamp()方法可以实现此功能:
>>> t= 1491664200.0
>>> print(datetime.fromtimestamp(t))
2017-04-08 23:10:00
其实,上述的转换是timestamp和本地时间之间的转换。而本地时间是指操作系统设置的时区时间。使用utcfromtimestamp()可以转换为格林威治标准时间:
>>> print(datetime.utcfromtimestamp(t))
2017-04-08 15:10:00
字符串str转换为datetime
>>> cday = datetime.strptime('2017-4-8 23:20:38','%Y-%m-%d %H:%M:%S')
>>> print(cday)
2017-04-08 23:20:38
其中,字符串'%Y-%m-%d %H:%M:%S'规定了日期和时间部分的格式
datetime转化为str
>>> print(datetime.now().strftime('%a/%b/%d %H:%M'))
Sun/Apr/08 23:28
datetime的加减
>>> from datetime import datetime,timedelta
>>> now = datetime.now()
>>> now + timedelta(hours=8)
datetime.datetime(2018, 4, 9, 7, 30, 3, 485905)
>>> now - timedelta(days=2)
datetime.datetime(2018, 4, 6, 23, 30, 3, 485905)
>>> now - timedelta(days=2,hours = 2)
datetime.datetime(2018, 4, 6, 21, 30, 3, 485905)
本地时间转换为UTC时间
本地时间是指系统设定时区的时间,例如北京时间是UTC+8:00时区的时间,而UTC时间是指UTC+0:00的时间。
一个datetime类型的数据有一个时区属性tzinfo,默认为None,可以给datetime设置一个时区:
>>> from datetime import datetime,timedelta,timezone
>>> tz_utc_8 = timezone(timedelta(hours=8))
>>> now = datetime.now()
>>> now
datetime.datetime(2018, 4, 9, 22, 17, 41, 334741)
>>> dt = now.replace(tzinfo=tz_utc_8)
>>> dt
datetime.datetime(2018, 4, 9, 22, 17, 41, 334741, tzinfo=datetime.timezone(datetime.timedelta(0, 28800)))
时区转换
可以通过utcnow()获得当前的UTC时间,在转换为任意时区的时间:
>>> utc_dt = datetime.utcnow().replace(tzinfo=timezone.utc)
>>> print(utc_dt)
2018-04-09 14:21:48.205455+00:00
>>> bh_dt = utc_dt.astimezone(timezone(timedelta(hours=8)))
>>> print(bh_dt)
2018-04-09 22:21:48.205455+08:00
>>> tokyo_dt = utc_dt.astimezone(timezone(timedelta(hours=9)))
>>> print(tokyo_dt)
2018-04-09 23:21:48.205455+09:00
>>> tokyo_dt2 = bh_dt.astimezone(timezone(timedelta(hours=9)))
>>> print(tokyo_dt2)
2018-04-09 23:21:48.205455+09:00
例子中,utc_dt是一个UTC时间,并强制设置时区为UTC+0:00。这是后续的时区转换的关键。
astimezone()可以转换任意时区;
bh_dt是东八区的时间;tokyo_dt和tokyo_dt2都是东九区的时间,前者是通过utc_dt转换的,后者是通过东八区的时间转换的
python内置模块-datetime的更多相关文章
- Python 入门之 内置模块 -- datetime模块
Python 入门之 内置模块 -- datetime模块 1.datetime模块 from datetime import datetime (1)datetime.now() 获取当前时间和日期 ...
- Python学习笔记【第八篇】:Python内置模块
什么时模块 Python中的模块其实就是XXX.py 文件 模块分类 Python内置模块(标准库) 自定义模块 第三方模块 使用方法 import 模块名 form 模块名 import 方法名 说 ...
- python内置模块[sys,os,os.path,stat]
python内置模块[sys,os,os.path,stat] 内置模块是python自带功能,在使用内置模块时,需要遵循 先导入在 使用 一.sys 对象 描述 sys.argv 命令行参数获取,返 ...
- python内置模块介绍(一)
本文主要介绍模块列表如下: os sys re time datetime random shutil subprocess os模块 os.getcwd() ...
- Python内置模块(re+collections+time等模块)
Python内置模块(re+collections+time等模块) 1. re模块 import re 在python要想使用正则必须借助于模块 re就是其中之一 1.1 findall功能( re ...
- Python的datetime
Python的datetime 总会用到日期格式化和字符串转成日期,贴点代码以供参考,其实API真的是很全的,可是又不知道具体的method... datetime.datetime.strftime ...
- python内置模块(4)
这一部分是python内置模块系列的最后一部分,介绍了一些小巧有用的内置模块. 目录: 1.random 2.shelve 3.getpass 4.zipfile 5.tarfile 6.bisect ...
- python 有关datetime时间日期 以及时间戳转换
直接上代码 其中有注释 #coding=utf-8 import time import datetime def yes_time(): #获取当前时间 now_time = datetime.da ...
- python的datetime模块处理时间
python的datetime模块主要用来处理时间,里面包含很多类,包括timedelay,date,time,datetime等 开发中经常会用到模块里面的datetime类,这是一个表示日期时间的 ...
随机推荐
- vue学习笔记(七)组件
前言 在前面vue的一些博客中,我们几乎将vue的基础差不多学习完了,而从本篇博客开始将会进入到vue的另一个阶段性学习,本篇博客的内容在以后的vue项目中占很大的比重,所以小伙伴们需要认真学习,本篇 ...
- 基于SDF渲染字体
18号字体 18号字体放大15倍 基于sdf渲染字体放大15倍 相比常规的渲染方式,基于SDF渲染文字可无限放大并保持清晰,几乎没有开销就可实现描边,发光,抗锯齿等效果.且它只需要很小的纹理缓存SDF ...
- 浅谈Python中函数式编程、面向对象编程以及古怪的PythonIC
1.函数式编程作为结构化编程的一种,正在受到越来越多的重视.那么什么事函数式编程呢? 在维基百科中给出了详细的定义,函数式编程又称泛函数编程,是一种编程规范,它将函数运算视为数学上的函数计算.简单的来 ...
- flask实现验证码并验证
效果图: 点击图片.刷新页面.输入错误点击登录时都刷新验证码 实现步骤: 第一步:先定义获取验证码的接口 verificationCode.py #验证码 @api.route('/imgCode') ...
- Mybatis分页插件PageHelper的学习与使用
目录 中文教程 PageHelper使用 后端程序员都知道,在Web系统中,分页是一种常见的功能,我之前写的分页方法都比较麻烦,移植性也不高,这就很不乐观了.作为一个积极开朗的程序员,怎么能不去了解P ...
- MYSQL远程连接速度慢的解决方法
在局域网内连接其他机器的MYSQL,发现速度慢的很,不知道什么原因,总有几秒的延迟. 后来在网上发现解决方法,my.ini里面添加 [mysqld]skip-name-resolveskip-gran ...
- Qt事件分发机制源码分析之QApplication对象构建过程
我们在新建一个Qt GUI项目时,main函数里会生成类似下面的代码: int main(int argc, char *argv[]) { QApplication application(argc ...
- Hyperledger Fabric 动态增加组织到网络中
本文基于Hyperledger Fabric 1.4版本. 官方文档地址:传送门 动态添加一个组织到Fabric网络中也是一个比较重要的功能.官方文档写的已经很详细了,有能力的尽量还是看官方文档,本文 ...
- 配置基于接口地址池的DHCP
配置基于接口地址池的DHCP 原理概述 DHCP(动态主机配置协议),采用C/S方式工作,C向S动态请求配置信息,S自动分配配置信息. 基于接口地址池的DHCP服务器,链接这个接口网段的用户都可以从该 ...
- git 使用详解(10)-- 远程分支
远程分支 远程分支(remote branch)是对远程仓库中的分支的索引.它们是一些无法移动的本地分支:只有在Git 进行网络交互时才会更新.远程分支就像是书签,提醒着你上次连接远程仓库时上面各分支 ...