时间模块time和datetime的使用
日期和时间
一 time模块
import time
时间的表示形式:
时间戳 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
以整型或浮点型表示时间的一个以秒为单位的时间间隔。这个时间间隔的基础值是从1970年1月1日开始算起
(一) 格式化日期的函数
time.time() | 当前时间戳(秒数) UNIX和Windows只支持到2038年。 |
---|---|
time.localtime() | 接收时间辍(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组 (0是周一) |
time.strftime("%Y-%m-%d %H:%M:%S"[,time.localtime()]) | 格式化成2016-03-20 11:45:39形式 第二个参数可有可无 |
time.asctime() | 返回格式化后的英文文本的时间 |
time.mktime(tupletime) | 接受时间元组并返回时间辍 |
time.sleep(secs) | 推迟调用线程的运行,secs指秒数。 |
time.clock() | 用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。 |
time.strptime(“2013-10-10 23:40:00”, "%Y-%m-%d %H:%M:%S") | 将其转换为时间元组 |
mktime的例子
import time
t = (2016, 2, 17, 17, 3, 38, 1, 48, 0)
secs = time.mktime( t )
print ("time.mktime(t) : %f" % secs)#time.mktime(t) : 1455699818.000000
time.strptime(“2013-10-10 23:40:00”, "%Y-%m-%d %H:%M:%S")
time = time.mktime(time.strptime("2013-10-10 23:40:00", "%Y-%m-%d %H:%M:%S"))
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time)))
计算程序运行的时间
import time
def procedure():
for i in range(10000):
pass
# time.clock
t0 = time.clock()
procedure()
print (time.clock() - t0)
# time.time
t0 = time.time()
procedure()
print (time.time() - t0)
(二) python中时间日期格式化符号
%Y | 4位的年 | %y | 2位的年 |
---|---|---|---|
%m | 月份(01-12) | %d | 月内中的一天(0-31) |
%H | 24小时制小时数(0-23) | %I | 12小时制小时数(01-12) |
%M | 分钟数(00=59) | %S | 秒(00-59) |
%a | 本地简化星期名称 英文文本 简化 | %A | c本地简化星期名称 英文文本 完整 |
%j | 年内的一天(001-366) | %w | 星期(0-6),星期天为星期的开始 (0是周一) |
%x | 本地相应的日期表示 (08/02/17) | %X | 本地相应的时间表示 23:48:34 |
例子:计算一个人活了多久
二、日历(Calendar)模块
calendar.isleap(year)
是闰年返回 True,否则为 false。
import calendar
print(calendar.isleap(2000))
True
print(calendar.isleap(1900))
False
calendar.leapdays(y1,y2)
返回在Y1,Y2两年之间的闰年总数。
calendar.month(year,month,w=2,l=1)
返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。
获取某月日历
import calendar
cal = calendar.month(2016, 1)
print ("以下输出2016年1月份的日历:")
print (cal)
例子:Python 生成日历
# 引入日历模块
import calendar
# 输入指定年月
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
# 显示日历
print(calendar.month(yy,mm))
三 datetime模块
import datetime
datetime比time高级了不少,可以理解为datetime基于time进行了封装,提供了各位使用的函数,datetime模块的接口更直观,更容易调用
from datetime import datetime
本地时间 datetime.now() #2017-08-03 00:13:00.690975
utc时间 datetime.utcnow()
#获取指定时间
d2 = datetime.datetime(1999, 10, 1, 10, 28, 25, 123456) #年月日 时分秒 微妙数 1999-10-01 10:28:25.000001
#没有微妙数 省略
d2 = datetime.datetime(1999, 10, 1, 10, 28, 25) #1999-10-01 10:28:25
datetime 转换成时间戳
把一个datetime
类型转换为timestamp['taɪmstæmp]只需要简单调用timestamp()
方法:
>>> from datetime import datetime
>>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期时间创建datetime
>>> dt.timestamp() # 把datetime转换为timestamp
datetime.now().timestamp()
1429417200.0
注意Python的timestamp是一个浮点数。如果有小数位,小数位表示毫秒数。
timestamp转换为datetime
要把timestamp转换为datetime
,使用datetime
提供的fromtimestamp()
方法:
>>> from datetime import datetime
>>> t = 1429417200.0
>>> print(datetime.fromtimestamp(t))
2015-04-19 12:20:00
注意到timestamp是一个浮点数,它没有时区的概念,而datetime是有时区的。上述转换是在timestamp和本地时间做转换。
timestamp也可以直接被转换到UTC标准时区的时间:
>>> from datetime import datetime
>>> t = 1429417200.0
>>> print(datetime.fromtimestamp(t)) # 本地时间
2015-04-19 12:20:00
>>> print(datetime.utcfromtimestamp(t)) # UTC时间
2015-04-19 04:20:00
str转换为datetime
很多时候,用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过datetime.strptime()
实现,需要一个日期和时间的格式化字符串:
>>> from datetime import datetime
>>> cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
>>> print(cday)
2015-06-01 18:19:59
字符串'%Y-%m-%d %H:%M:%S'
规定了日期和时间部分的格式。详细的说明请参考Python文档。
注意转换后的datetime是没有时区信息的。
datetime转换为str
如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过strftime()
实现的,同样需要一个日期和时间的格式化字符串:
>>> from datetime import datetime
>>> now = datetime.now()
>>> print(now.strftime('%a, %b %d %H:%M'))
Mon, May 05 16:28
Python 获取昨天日期
# 引入 datetime 模块
import datetime
def getYesterday():
today=datetime.date.today()
oneday=datetime.timedelta(days=1)
yesterday=today-oneday
return yesterday
# 输出
print(getYesterday())
四.时间加减问题
当前日期时间
import datetime
print datetime.datetime.now()
# 2018-05-08 16:53:30.101000
格式化时间
import datetime
print datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
# 2018-05-08 16:54
多加一天
import datetime
print (datetime.datetime.now()+datetime.timedelta(days=1)).strftime("%Y-%m-%d %H:%M:%S")
# 2018-05-09 16:56:07
减一天
import datetime
print (datetime.datetime.now()+datetime.timedelta(days=-1)).strftime("%Y-%m-%d %H:%M:%S")
# 2018-05-07 16:56:59
可以把days改为hours minutes,就可以提前XX小时/分钟了。
时间模块time和datetime的使用的更多相关文章
- Python常用模块-时间模块(time&datetime)
Python常用模块-时间模块(time & datetime) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.初始time模块 #!/usr/bin/env pyth ...
- python时间模块time,datetime
时间模块time.datetime 模块(module)是 Python 中非常重要的东西,你可以把它理解为 Python 的扩展工具.换言之,Python 默认情况下提供了一些可用的东西,但是这些默 ...
- python时间模块-time和datetime
时间模块 python 中时间表示方法有:时间戳,即从1975年1月1日00:00:00到现在的秒数:格式化后的时间字符串:时间struct_time 元组. struct_time元组中元素主要包括 ...
- python内建时间模块 time和datetime
时间模块 UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间.在中国为UTC+8.DST(Daylight Saving Time)即夏令时. ...
- python常用标准库(时间模块 time和datetime)
常用的标准库 time时间模块 import time time -- 获取本地时间戳 时间戳又被称之为是Unix时间戳,原本是在Unix系统中的计时工具. 它的含义是从1970年1月1日(UTC/G ...
- python 时间模块time,datetime详细介绍
模块(module)是 Python 中非常重要的东西,你可以把它理解为 Python 的扩展工具.换言之,Python 默认情况下提供了一些可用的东西,但是这些默认情况下提供的还远远不能满足编程实践 ...
- python 时间模块time,datetime
模块(module)是 Python 中非常重要的东西,你可以把它理解为 Python 的扩展工具.换言之,Python 默认情况下提供了一些可用的东西,但是这些默认情况下提供的还远远不能满足编程实践 ...
- Python3学习笔记(十五):常用时间模块time和datetime
一.time模块 1.时间戳 time.time() :从1970-01-01到至今的秒数 import time print(time.time()) 1529238004.2784646 2.等待 ...
- day5模块学习 -- time、datetime时间模块
1.定义 模块:用来从逻辑上组织python(变量,函数,类,逻辑:实现一个功能)代码,本质就是.py结尾的python文件(文件名:test.py,对应的模块名test) 包:用来从逻辑上组织模块的 ...
随机推荐
- Layui 点击查询分页,页码不刷新解决方法
Layui 点击查询分页,页码不刷新解决方法 function queryDataGrid() { layui.table.reload(tableName, { where: { //设定异步数据接 ...
- win10查看激活到期时间
我们知道Windows系统需要激活后才可以使用全部功能,那么你的Windows10激活了吗?如何查看激活时间呢?是不是永久激活的?带着这些问题,下面我们就一个一个逐一查看一下吧. 工具/原料 Wi ...
- vs2010+ARX2012向导添加mfc支持类出现Error in default.htm PopulateDialogIDs():
初步判断为ARX2012默认的编译器平台集是v90,如果你只安装了vs2010,没有安装vs2008sp1或者vs2008sp1的编译器,以及对应的Windows MFC SDK,就可能会出现这样的问 ...
- (转)深入浅出Redis-redis哨兵集群
背景:对于后台开发,需要了解与集群相关的工作. 深入浅出Redis-redis哨兵集群 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentin ...
- spring security进阶2 添加账户并对账户密码进行加密
目录 spring security 添加账户并对账户密码进行加密 一.原理分析 1.1加密原理 1.2加密后的登录过程 二.代码实现 2.1添加用户的页面如下, register.html 2.2c ...
- bat启动OpenOffice4
start "" /d "C:\Program Files (x86)\OpenOffice 4\program" "soffice.exe" ...
- [转帖]FastDFS图片服务器单机安装步骤
FastDFS图片服务器单机安装步骤 https://www.cnblogs.com/yuesf/p/11847103.html 前面已经讲 一张图秒懂微服务的网络架构,通过此文章可以了解FastDF ...
- spring boot + vue实现图片上传及展示
转载:https://blog.csdn.net/weixin_40337982/article/details/84031778 其中一部分对我很有帮助 转载记录下 首先,html页面: <! ...
- Qt 中的二进制兼容策略(简而言之就是地址不能变,剩下的就是让地址不变的技巧)
本文翻译自 Policies/Binary Compatibility Issues With C++ 二进制兼容的定义 如果程序从一个以前版本的库动态链接到新版本的库之后,能够继续正常运行,而不需要 ...
- Sql 脚本文件太大 还原数据库
sql脚本太大直接在数据库中执行会提示内存不足,我们看生成的脚本文件会发现每隔100条会有一个GO来分隔,这就好说了 在我将数据库的结构连同数据生成一个脚本文件db.sql 后,想在另外的电脑上恢复数 ...