1、datetime格式化代码
1)datetime模块中包含如下类:
| 类名 | 功能说明 | 
|---|---|
| date | 日期对象,常用的属性有year, month, day | 
| time | 时间对象 | 
| datetime | 日期时间对象,常用的属性有hour, minute, second, microsecond | 
| datetime_CAPI | 日期时间对象C语言接口 | 
| timedelta | 时间间隔,即两个时间点之间的长度 | 
| tzinfo | 时区信息对象 | 
2)静态方法和字段
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对象;
3)方法和属性
dt=datetime.now()#datetime对象#dt.year、month、day、hour、minute、second、microsecond、tzinfo:
dt.date():获取date对象;
dt.time():获取time对象;
dt.replace([year[,month[,day[,hour[,minute[,second[,microsecond[,tzinfo]]]]]]]]):
dt.timetuple()
dt.utctimetuple()
dt.toordinal()
dt.weekday()
dt.isocalendar()
dt.isoformat([ sep] )
dt.ctime():返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple()));
dt.strftime(format)
6、使用timedelta类实现时间加减
#coding:utf-8
from  datetime import *
dt = datetime.now()
#日期减一天
dt1 = dt + timedelta(days=-1)#昨天
dt2 = dt - timedelta(days=1)#昨天
dt3 = dt + timedelta(days=1)#明天
delta_obj = dt3-dt
print type(delta_obj),delta_obj#<type 'datetime.timedelta'> 1 day, 0:00:00
print delta_obj.days ,delta_obj.total_seconds()#1 86400.0
7、tzinfo时区类
#! /usr/bin/python
# coding=utf-8
from datetime import datetime, tzinfo,timedelta
"""
tzinfo是关于时区信息的类
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(2011,11,11,0,0,0,tzinfo = UTC(8))
print "beijing time:",beijing
#曼谷时间
bangkok = datetime(2011,11,11,0,0,0,tzinfo = UTC(7))
print "bangkok time",bangkok
#北京时间转成曼谷时间
print "beijing-time to bangkok-time:",beijing.astimezone(UTC(7))
#计算时间差时也会考虑时区的问题
timespan = beijing - bangkok
print "时差:",timespan
#Output==================
# beijing time: 2011-11-11 00:00:00+08:00
# bangkok time 2011-11-11 00:00:00+07:00
# beijing-time to bangkok-time: 2011-11-10 23:00:00+07:00
# 时差: -1 day, 23:00:00
所有合法格式代码的参考:
| 标识 | 含义 | 举例 | 
| %a | 星期简写 | Mon | 
| %A | 星期全称 | Monday | 
| %b | 月份简写 | Mar | 
| %B | 月份全称 | March | 
| %c | 适合语言下的时间表示 | May Mon May 20 16:00:02 2013 | 
| %d | 一个月的第一天,取值范围: [01,31]. | 20 | 
| %H | 24小时制的小时,取值范围[00,23]. | 17 | 
| %I | 12小时制的小时,取值范围 [01,12]. | 10 | 
| %j | 一年中的第几天,取值范围 [001,366]. | 120 | 
| %m | 十进制月份,取值范围[01,12]. | 50 | 
| %M | 分钟,取值范围 [00,59]. | 50 | 
| %p | 上、下午,AM 或 PM. | PM | 
| %S | 秒,取值范围 [00,61]. | 30 | 
| %U | 这一年的星期数(星期天为一个星期的第一天, 开年的第一个星期天之前的天记到第0个星期) 趋势范围[00,53]。 | 20 | 
| %w | 星期的十进制表示,取值范围 [0(星期天),6]. | 1 | 
| %W | 这一年的星期数(星一为一个星期的第一天, 开年的第一个星期一之前的天记到第0个星期) 趋势范围[00,53]。 | 20 | 
| %x | 特定自然语言下的日期表示 | 05/20/13 | 
| %X | 特定自然语言下的时间表示 | 16:00:02 | 
| %y | 年的后两位数,取值范围[00,99]. | 13 | 
| %Y | 完整的年 | 2013 | 
| %Z | 时区名 | CST(China Standard Time) | 
| %% | %字符 | % | 
相关文档: