您的位置:首页 > 编程语言 > Python开发

运维python进行(二) 时间日期的格式化

2016-12-29 22:04 246 查看
因为经常会写一些定时任务和报表,经常需要获取昨天日期,上个月的天数,或者今天周几,如果有python模块肯定方便不少,今天就介绍两个“datetime”,“calendar”

datetime模块介绍

如何获取当前的年,月,日,周等等。格式化输出时间,
官方文档传送门
In [25]: import datetime
In [26]: now=datetime.datetime.now()      #now是获取当前时间的方法
In [27]: print now                       #默认now方法返回当前时间
2016-12-29 21:47:37.408258
In [37]:  print now.day                   #now方法获取天
29
In [38]:  print now.month                #now方法获取月
12
In [39]:  print now.year                 #now方法获取年
2016
In [46]:  print now.weekday()             #weekday方法获取周几(0~6分别代表周一~周日)
3
In [53]:  print now.strftime('%Y-%m-%d')   #strftime方法格式化输出当前的年月日
2016-12-29


2. 获取指定时间长度
下面是指定时间长度1周+1天+2小时+3分钟+4秒+5毫秒+6微秒,datetime.timedelta(1)默认为天#%Y代表年,%m代表月,%d代表天其它详情请在本页底端查询

In [69]:  print datetime.timedelta(microseconds=6,milliseconds=5,seconds=4,minutes=3,hours=2,days=1,weeks=1)
8 days, 2:03:04.005006
In [6]: day = datetime.timedelta(days=1)   #获取1天的时间长度
In [7]: print day
1 day, 0:00:00


3.时间的偏移运算

获取昨天时间
In [6]: day = datetime.timedelta(days=1)   #获取1天的时间长度
In [8]: now - day                          #把当前时间向前偏移1天(这里可以直接加减乘除)
Out[8]: datetime.datetime(2016, 12, 29, 13, 46, 48, 866206)


下面是更多的datetime的用法
In [40]:  print now.
now.astimezone       now.dst              now.isoformat        now.minute           now.second           now.timetz           now.utcfromtimestamp now.year
now.combine          now.fromordinal      now.isoweekday       now.month            now.strftime         now.today            now.utcnow
now.ctime            now.fromtimestamp    now.max              now.now              now.strptime         now.toordinal        now.utcoffset
now.date             now.hour             now.microsecond      now.replace          now.time             now.tzinfo           now.utctimetuple
now.day              now.isocalendar      now.min              now.resolution       now.timetuple        now.tzname           now.weekday


格式化的最下面的变量替代符
%a 星期几的简写
%A 星期几的全称
%b 月份的简写
%B 月份的全称
%c 标准的日期的时间串
%C 年份的前两位数字
%d 十进制表示的每月的第几天
%D 月/天/年
%e 在两字符域中,十进制表示的每月的第几天
%F 年-月-日
%g 年份的后两位数字,使用基于周的年
%G 年份,使用基于周的年
%h 简写的月份名
%H 24小时制的小时
%I 12小时制的小时
%j 十进制表示的每年的第几天
%m 十进制表示的月份
%M 十时制表示的分钟数
%n 新行符
%p 本地的AM或PM的等价显示
%r 12小时的时间
%R 显示小时和分钟:hh:mm
%S 十进制的秒数
%t 水平制表符
%T 显示时分秒:hh:mm:ss
%u 每周的第几天,星期一为第一天 (值从1到7,星期一为1)
%U 第年的第几周,把星期日作为第一天(值从0到53)
%V 每年的第几周,使用基于周的年
%w 十进制表示的星期几(值从0到6,星期天为0)
%W 每年的第几周,把星期一做为第一天(值从0到53)
%x 标准的日期串
%X 标准的时间串
%y 不带世纪的十进制年份(值从0到99)
%Y 带世纪部分的十制年份
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号


拓展
calendar是python的一个第三方日历拓展模块可以直接使用pip安装,我们可以通过calendar模块知道很多信息,例如:今天周几,本月天数等等
pip install calendar

calendar模块输出本月的天数,由几周和周几开始,每周有哪几天
In [17]:
calendar.monthrange(2016,12)
Out[17]: (3, 31)             #(本月第一天是周(3+1),本月总共31天)

In [21]: s=calendar.monthcalendar(2016,8)
In [22]: print s             #这里输出了本月的每周对应日期列表,可以直接使用len查看本月几周
[[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, 26, 27, 28], [29, 30, 31, 0, 0, 0, 0]]

输出日历表
In [17]:
calendar.month(2016,8)
Out[17]: '    August 2016\nMo Tu We Th Fr Sa Su\n 1  2
3  4  5
6  7\n 8  9 10 11 12 13 14\n15 16 17 18 19 20 21\n22 23
24 25 26 27 28\n29 30 31\n'

In [18]:
s=calendar.month(2016,8)

In [19]: print s
August 2016
Mo Tu We Th Fr Sa Su
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 26 27 28
29 30 31
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息