旨在记录python 中 datetime 模块常用的方法
1. datetime 模块
datatime 模块重新封装了time模块,提供更多接口,提供的类有:date, time, datetime, timedelta, tzinfo。
1.1 date 类
datetime.date(year, month, day)
常用方法和属性:
date.max、date.min:date对象所能表示的最大、最小日期;
date.resolution:date对象表示日期的最小单位。这里是天。
date.today():返回一个表示当前本地日期的date对象;
date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;
1.2 time 类
datetime.time(hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] )
time.min、time.max:time类所能表示的最小、最大时间。其中,time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999);
time.resolution:时间的最小单位,这里是1微秒;
t1 = datetime.time(15,20,50)#time对象
t1.hour、t1.minute、t1.second、t1.microsecond:时、分、秒、微秒;
t1.tzinfo:时区信息;
t1.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ):创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变);
t1.isoformat():返回型如"HH:MM:SS"格式的字符串表示;
t1.strftime(fmt):同time模块中的format;
1.3 datetime 类
datetime相当于date和time结合起来。
datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )
datetime.today():返回一个表示当前本地时间的datetime对象;
datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
datetime.utcnow():返回一个当前utc时间的datetime对象;#格林威治时间
datetime.fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;
datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;
datetime.combine(date, time):根据date和time,创建一个datetime对象;
datetime.strptime(date_string, format):将格式字符串转换为datetime对象;
1.4 timedelta类
时间加减,使用timedelta可以很方便的在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算。
#coding:utf-8
import datetime
now = datetime.datetime.now() # 获取当前时间 2020-02-16 15:20:01.752000
# 获取前一小时
before_one_hour = now + datetime.timedelta(hours=-1)
print before_one_hour
# 根据指定格式获取获取前一小时
print before_one_hour.strftime('%Y-%m-%d %H') # 2020-02-16 14
#获取前一天
before_one_day = now + datetime.timedelta(days=-1)
print before_one_day
# 获取明天
after_one_day = now + timedelta(days=1)
print after_one_day
1.5 tzinfo 类
#! /usr/bin/env python
# coding=utf-8
from datetime import datetime, tzinfo,timedelta
"""
tzinfo 是一个关于时区信息的抽象类,无法直接实例化,通过继承来实现
"""
class UTC(tzinfo):
"""UTC"""
def __init__(self,offset = 0):
self._offset = offset
def utcoffset(self, dt):
return timedelta(hours=self._offset)
def tzname(self, dt):
return "UTC +%s" % self._offset
def dst(self, dt):
return timedelta(hours=self._offset)
#北京时间
beijing = datetime(2020,02,16,0,0,0,tzinfo=UTC(8))
print "beijing time:",beijing
#曼谷时间
bangkok = datetime(2020,02,16,0,0,0,tzinfo=UTC(7))
print "bangkok time",bangkok
#北京时间转成曼谷时间
print "beijing time transfer to bangkok time:",beijing.astimezone(UTC(7))
#计算时间差时也会考虑时区的问题
timespan = beijing - bangkok
print "时差:",timespan
#输出
beijing time: 2020-02-16 00:00:00+08:00
bangkok time 2020-02-16 00:00:00+07:00
beijing time transfer to bangkok time: 2020-02-15 23:00:00+07:00
时差: -1 day, 23:00:00