模块time, datetime的用法
一. time
time库提供了各种操作时间的方法
1. time.asctime([ tuple ]):将一个时间元组转换成一个可读的 24 个时间字符串. >>> time.asctime(time.localtime()) 'Mon Jun 11 11:19:10 2018' 2. time.ctime():字符串类型返回当前时间 'Mon Jun 11 11:20:12 2018' 3. time.localtime():默认将当前时间转为struct_time格式类型 >>>time.localtime() time.struct_time(tm_year = 2018 , tm_mon = 6 , tm_mday = 11 , tm_hour = 11 , tm_min = 21 , tm_sec = 59 , tm_wday = 0 , tm_yday = 162 , tm_isdst = 0 ) 可以用time.localtime()[x]来取元组里面的值,[ 0 ]就是 2017 年份,tm_wday是周几,ubuntu好像周一是用 0 表示的。 4. time.sleep(seconds):延迟执行给定的秒数 time.sleep( 3 ) 5. time.strftime( format [, tuple ]): 将元组时间转换为指定时间格式,当 tuple 不指定时间时,默认为当前时间。 >>> time.strftime( '%Y-%m-%d %H:%M:%S' ) '2018-06-11 11:29:12' 6. time.mktime():将一个struct_time转为时间戳 >>> time.mktime(time.localtime()) 1528687466.0 例子 1 ,把指定的一个日期转换成时间戳 >>> a = "2014-10-10 23:40:30" >>> timearray = time.strptime(a, '%Y-%m-%d %H:%M:%S' ) # 将其转换为时间数组,使用strptime()可以转换成struct_time >>> timearray time.struct_time(tm_year = 2014 , tm_mon = 10 , tm_mday = 10 , tm_hour = 23 , tm_min = 40 , tm_sec = 30 , tm_wday = 4 , tm_yday = 283 , tm_isdst = - 1 ) >>> timestap = int (time.mktime(timearray)) #转换成时间戳 >>> print timestap 1412955630 |
时间戳的作用是给时间加密,那么怎么把时间戳还原呢?
>>> timestamp = 1505874314.0 >>> timearray = time.localtime(timestamp) >>> styletime = time.strftime( "%Y-%m-%d %H:%M:%S" ,timearray) >>> print styletime 2017 - 09 - 20 10 : 25 : 14 |
1) 时间戳转换为指定格式日期的方法2,比实际时间差8个小时,utc国际时间的原因吧
2)获取当前时间并转换为指定日期格式,方法1的代码第5行参数,应该是now
二. datetime模块
常用的几个类如下
1. datetime.date()类
from datetime import date from datetime import datetime<br> 1 )对象能表示的最大时间 >>> date. max datetime.date( 9999 , 12 , 31 ) 2 )对象能表示的最小时间 >>> date. min datetime.date( 1 , 1 , 1 ) 3 )根据datetime自定义时间格式,这里用到了datetime类,需要导入 from datetime import datetime >>> date.strftime(datetime.now(), '%Y-%m-%d %H:%M:%S' ) '2018-06-11 14:00:05' 4 )返回当前系统时间 >>> date.today() datetime.date( 2018 , 6 , 11 ) 5 )返回iso格式日期 >>> date.isoformat(date.today()) '2018-06-11' 6 )返回时间戳日期 >>> date.fromtimestamp(time.time()) datetime.date( 2018 , 6 , 11 ) 7 )根据日期返回是周几,里面的参数需要是datetime.date()对象类型,星期一是用 0 表示。 >>> date.weekday(date.today()) 0 8 )根据日期返回星期几,星期一用 1 表示 >>> date.isoweekday(date.today()) 1 9 )根据日期返回日历(年,第几周,星期几) >>> date.isocalendar(date.today()) ( 2018 , 24 , 1 ) |
2. datetime.datetime()
from datetime import datetime 1 )获取当前系统时间 >>> datetime.now() datetime.datetime( 2018 , 6 , 11 , 14 , 22 , 51 , 442684 ) >>> datetime.today() datetime.datetime( 2018 , 6 , 11 , 14 , 23 , 21 , 721145 ) >>> print (datetime.now()) 2018 - 06 - 11 14 : 22 : 51.442684 2 ) 返回ISO 8601 格式时间 >>> datetime.isoformat(datetime.now()) '2018-06-11T14:27:17.590074' 3 )返回有年月日的对象 >>> datetime.date(datetime.now()) datetime.date( 2018 , 6 , 11 ) 4 )返回有时分秒的对象 >>> datetime.time(datetime.now()) datetime.time( 14 , 30 , 7 , 982648 ) 5 )返回UTC时间,比中国时间早 8 个小时 >>> datetime.utcnow() datetime.datetime( 2018 , 6 , 11 , 6 , 31 , 34 , 506562 ) |
3. datetime.timedelta():用于时间间隔
from datetime import timedelta from datetime import date 1 )获取昨天的日期 >>> date.today() - timedelta(days = 1 ) datetime.date( 2018 , 6 , 10 ) >>> date.isoformat(date.today() - timedelta(days = 1 )) '2018-06-10' 2 )获取明天的日期 >>> date.today() + timedelta(days = 1 ) datetime.date( 2018 , 6 , 12 ) >>> date.isoformat(date.today() + timedelta(days = 1 )) '2018-06-12' |
几个练习题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 1. 用datetime获取当前的日期,例如: 2013 - 03 - 29 from datetime import date >>> date.today() datetime.date( 2018 , 6 , 11 ) >>> print (date.today()) #使用print()函数可以只打印出具体日期 2018 - 06 - 11 2. 用datetime返回一个月前的日期:比如今天是 2013 - 3 - 29 一个月前的话: 2013 - 02 - 27 解答: >>> now = date.today() >>> print now 2017 - 09 - 18 >>> onemonthago = now - datetime.timedelta(days = 30 ) >>> print onemonthago 2017 - 08 - 19 3. >>> date = datetime.datetime( 2013 , 03 , 29 ) - datetime.timedelta(days = 30 ) >>> print date 2013 - 02 - 27 00 : 00 : 00 >>> time_format = date.strftime( '%Y%m%d' ) >>> print time_format 20130227 |
努力生活,融于自然
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· SQL Server 内存占用高分析
· 盘点!HelloGitHub 年度热门开源项目
· DeepSeek V3 两周使用总结
· 02现代计算机视觉入门之:什么是视频
· C#使用yield关键字提升迭代性能与效率
· 回顾我的软件开发经历(1)