python datetime模块处理时间

写程序时遇到了记录日期、时间,比较时间早晚的需求,考虑用datetime模块来实现。

 

 

datetime模块定义了下面这几个类:

  • datetime.date:表示日期的类。常用的属性有year, month, day;
  • datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
  • datetime.datetime:表示日期时间。
  • datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
  • datetime.tzinfo:与时区有关的相关信息。(这里不详细充分讨论该类,感兴趣的童鞋可以参考python手册)

    注 :上面这些类型的对象都是不可变(immutable)的。

我的需求涉及日期和时间,所以选用datetime类。

 

datetime是date与time的结合体,包括date与time的所有信息。它的构造函数如下:datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ),各参数的含义与date、time的构造函数中的一样。

    datetime类定义的类属性与方法:

  • datetime.min、datetime.max:datetime所能表示的最小值与最大值;
  • datetime.resolution:datetime最小单位;
  • 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对象;

使用例子:

from  datetime  import  *  
import  time  
  
print   'datetime.max:' , datetime.max  
print   'datetime.min:' , datetime.min  
print   'datetime.resolution:' , datetime.resolution  
print   'today():' , datetime.today()  
print   'now():' , datetime.now()  
print   'utcnow():' , datetime.utcnow()  
print   'fromtimestamp(tmstmp):' , datetime.fromtimestamp(time.time())  
print   'utcfromtimestamp(tmstmp):' , datetime.utcfromtimestamp(time.time())  
  
# ---- 结果 ----   
# datetime.max: 9999-12-31 23:59:59.999999   
# datetime.min: 0001-01-01 00:00:00   
# datetime.resolution: 0:00:00.000001   
# today(): 2010-04-07 09:48:16.234000   
# now(): 2010-04-07 09:48:16.234000   
# utcnow(): 2010-04-07 01:48:16.234000  # 中国位于+8时间,与本地时间相差8   
# fromtimestamp(tmstmp): 2010-04-07 09:48:16.234000   
# utcfromtimestamp(tmstmp): 2010-04-07 01:48:16.234000   
from datetime import *  
import time  
  
print 'datetime.max:', datetime.max  
print 'datetime.min:', datetime.min  
print 'datetime.resolution:', datetime.resolution  
print 'today():', datetime.today()  
print 'now():', datetime.now()  
print 'utcnow():', datetime.utcnow()  
print 'fromtimestamp(tmstmp):', datetime.fromtimestamp(time.time())  
print 'utcfromtimestamp(tmstmp):', datetime.utcfromtimestamp(time.time())  
  
# ---- 结果 ----  
# datetime.max: 9999-12-31 23:59:59.999999  
# datetime.min: 0001-01-01 00:00:00  
# datetime.resolution: 0:00:00.000001  
# today(): 2010-04-07 09:48:16.234000  
# now(): 2010-04-07 09:48:16.234000  
# utcnow(): 2010-04-07 01:48:16.234000  # 中国位于+8时间,与本地时间相差8  
# fromtimestamp(tmstmp): 2010-04-07 09:48:16.234000  
# utcfromtimestamp(tmstmp): 2010-04-07 01:48:16.234000 

 

    datetime类提供的实例方法与属性(很多属性或方法在date和time中已经出现过):

  • datetime.year、month、day、hour、minute、second、microsecond、tzinfo:
  • datetime.date():获取date对象;
  • datetime.time():获取time对象;
  • datetime. replace ([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ] ] ]):
  • datetime. timetuple ()
  • datetime. utctimetuple ()
  • datetime. toordinal ()
  • datetime. weekday ()
  • datetime. isocalendar ()
  • datetime. isoformat ([ sep] )
  • datetime. ctime ():返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple()));
  • datetime. strftime (format)
  • format支持如下格式:
    """
    转成字符串
    %y 两位数的年份表示(00-99)
    %Y 四位数的年份表示(000-9999)
    %m 月份(01-12)
    %d 月内中的一天(0-31)
    %H 24小时制小时数(0-23)
    %I 12小时制小时数(01-12) 
    %M 分钟数(00=59)
    %S 秒(00-59)
    
    %a 本地简化星期名称
    %A 本地完整星期名称
    %b 本地简化的月份名称
    %B 本地完整的月份名称
    %c 本地相应的日期表示和时间表示
    %j 年内的一天(001-366)
    %p 本地A.M.或P.M.的等价符
    %U 一年中的星期数(00-53)星期天为星期的开始
    %w 星期(0-6),星期天为星期的开始
    %W 一年中的星期数(00-53)星期一为星期的开始
    %x 本地相应的日期表示
    %X 本地相应的时间表示
    %Z 当前时区的名称
    %% %号本身 
    """

    两个datetime对象可以直接进行比较,或者相减返回一个时间间隔对象,或者日期时间加上一个间隔返回一个新的日期时间对象。

 

参考文章:python datetime处理时间

其他参考文章:Python中时间的处理之——Time篇

 

 

发布了44 篇原创文章 · 获赞 23 · 访问量 15万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章