首先简单说下关于时间的介绍其中重点是时间戳的处理, 时间戳是指格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒 (北京时间 1970 年 01 月 01 日 08 时 00 分 00 秒) 起至现在的总秒数. 这里这个知识只做了解, 接下来会用 python 三个关于时间的模块来定位时间, 计算时间等.
首先让我们来验证下时间戳及怎么换算时间戳
1. 要使用 time 方法首先要导入方法包 import time
2. 获取当前时间戳的方法是 print time.time()就可以得到当前执行这个方法的时间(单位是秒)
3. 验证格林时间起始值 1970-01-01 由于我们时区是北京所以后面时间用 08:00:00 来代表小时, 分钟, 秒
4. 简单介绍下时间格式中需要用到的格式单位
%Y 表示 Year 也就是年
%m 表示 Month 也就是月份
%d 表示 Day 也就是天
%H 表示 Hour 也就是小时
%M 表示 Minute 也就是分钟
%S 表示 Second 也就是秒
下面我们来看下图的验证结果:
这里很清晰的验证了时间戳的作用就是时间一种表示方式: 指的是从格林时间 1970 年 1 月 1 日到现在当前时间统计总秒数. 以后看到时间戳不用慌张了, 可以理解了接下来我们会教你如何转换时间及处理它.
然后我们来了解下常用的几个的 time 的方法, 以下代码中有注释
- #!/usr/bin/env python
- #-*- coding:utf-8 -*-
- import time
- date = "2018-08-08"
- # 转换输入的时间为格式化的元祖
- time_tuple = time.strptime(date, "%Y-%m-%d")
- print "strptime 方法:",time_tuple
- # 转换元祖为时间戳
- time_stamp = time.mktime(time_tuple)
- print "mktime 方法:",time_stamp
- # 转换时间戳为格式化的元祖
- local_time = time.localtime(time_stamp)
- print "localtime 方法:",local_time
- # 转换元祖为格式化的字符串时间
- format_time = time.strftime("%Y-%m-%d", local_time)
- print "strftime 方法:",format_time, type(format_time)
- # 获取当前时间点的时间戳
- print "time 方法:",time.time()
- # 获取当前时间
- print "asctime 方法:",time.asctime()
- # GMT 就是格林尼治标准时间
- print "gmtime 方法:",time.gmtime()
- # 获取格林时间的年份
- print "gmtime-tm_year 方法:",time.gmtime().tm_year
- # 获取格林时间的月份
- print "gmtime-tm_mon 方法:",time.gmtime().tm_mon
- # 获取格林时间的天
- print "gmtime-tm_mday 方法:",time.gmtime().tm_mday
- # 获取格林时间的小时
- print "gmtime-tm_hour 方法:",time.gmtime().tm_hour
- # 获取格林时间的分钟
- print "gmtime-tm_min 方法:",time.gmtime().tm_min
- # 获取格林时间的秒数
- print "gmtime-tm_sec 方法:",time.gmtime().tm_sec
- # 获取格林时间的星期几
- print "gmtime-tm_wday 方法:",time.gmtime().tm_wday
- # 获取格林时间的一年中的第几天
- print "gmtime-tm_yday 方法:",time.gmtime().tm_yday
我们在学习一个 datetime 方法, 会有同学问这个很眼熟 date+time?date 表示日期也就是时间中日期一些处理方法. 上面你看到又要记录输入时间格式又是转换来回导方法, 方法名又接近很容易混淆, 如果只是处理日期, 其实 datetime 模块是个不错的选择, 我也只简单介绍几个好用常用的方法.
接下来我们再来了解下 datetime 模块中的方法, 以下代码中有注释:
- #!/usr/bin/env python
- #-*- coding:utf-8 -*-
- import datetime
- # 打印当前时间的格式
- date_now = datetime.datetime.now()
- print date_now
- # 打印当前时间的指定格式
- date_str = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
- print date_str
- # 只打印今天的日期
- print datetime.date.today()
- # 获取几几年(类型是整形, 返回结果是数字)
- y = datetime.date.today().year
- # 获取几月(类型是整形, 返回结果是数字)
- m = datetime.date.today().month
- # 获取几号(类型是整形, 返回结果是数字)
- d = datetime.date.today().day
- print "打印上面获取的结果:",y,m,d
- print "验证上面的类型:",type(y),type(m),type(d)
- print "获取今天是周几:",datetime.datetime(y, m, d).strftime("%w")
- print "获取指定日期是周几:",datetime.datetime(2018, 10, 26).strftime("%w")
这里肯定会有同学知道 %w 就是 week 也就是周 (星期) 的单位, 是不是看了 datetime 的方法比 time 方法对于获取日期的方式还要简单.
当然接下来要介绍一个 calendar 日历定位的方法, 只要学会这个很容易结合上面的方法去处理日期时间的计算及时间转换, 国际化中时区的控制等.
1. 使用日历方法首先还是要导入 calendar 方法 import calendar
2. 介绍一个简单查看日历的方法 calendar.month(year)可以查看一年所有的日历信息 calendar.month(year,month)只查看当月日历信息
3. 这里我们要注意的是方法中星期一到星期天用 0 到 6 表示类似 range(7)输出的的值
下面让我们来看一些常用的方法已加注释
- #!/usr/bin/env python
- #-*- coding:utf-8 -*-
- import calendar
- print "判断输入年份是否是闰年:",calendar.isleap(2000)
- print "计算两个年份之间的闰年总和:",calendar.leapdays(2000,2020)
- print "获取当月总共有多少天:",calendar.monthrange(2018,10)
- # 星期天数对应用 0,1,2,3,4,5,6 代表星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期天
- print "获取日期星期几:",calendar.weekday(2018, 10, 01)
- print "获取当月的总天数 7 天为一组并标注对应索引与星期的关系",calendar.monthcalendar(2018,9)
到这里是不是想到怎么可以如何从数据中快速定位某一周或者 3 个月或指定周天的数据? 或者是通过时间的转换去处理国际化时间的时差问题等等. 只要灵活运用这 3 个方法可以让你的 python 对于时间日期等快速灵活的运用处理.
来源: https://www.cnblogs.com/cookie1026/p/9716251.html