datetime

Python提供了许多内置模块用于操作时间日期,如calendar,time,datetime,这篇文章主要是对datetime进行汇总,datetime模块的借口实现原则更加直观,更容易调用。

Datetime模块定义了两个常量:datetime.MAXYEAR和datetime.MINYEAR,分别表示datetime所能表示的最大、最小年份,MAXYEAR=9999,MINYEAR=1。

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

· datetime.date:表示日期的类,常用的属性有year,month,day;

· datetime.time:表示时间的类,常用的属性有hour,minute,second,microsecond;

· datetime.datetime:表示日期时间

· datetime.timedelta:表示时间间隔,即两个时间点之间的长度。

· datetime.tzinfo:与时区有关的相关信息

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

下面具体来介绍这些类的使用方式。

date类

date类表示一个日期。日期由年、月、日组成。date类的构造函数如下:

class datetime.date(year,month,day):参数的意义就不多做解释了,只是有几点要注意下:

· year的范围是[MINYEAR, MAXYEAR],即[1, 9999];

· month的范围是[1, 12]。(月份是从1开始的,不是从0开始的~_~);

· day的最大值根据给定的year, month参数来决定。例如闰年2月份有29天;

date类定义了一些常用的类方法与类属性,方便我们操作:

· date.max、date.min:date对象所能表示的最大、最小日期;

· date.resolution:date对象表示日期的最小单位。这里是天。

· date.today():返回一个表示当前本地日期的date对象;

· date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;

· datetime.fromordinal(ordinal):将Gregorian日历时间转换为date对象;(Gregorian Calendar :一种日历表示方法,类似于我国的农历,西方国家使用比较多,此处不详细展开讨论。)

使用例子:

 from datetime import *
import time print('date.today():',date.today())
print('date.resolution:',date.resolution)
print('date.max:',date.max)
print('date.min:',date.min)
print('date.fromtimestamp():',date.fromtimestamp(time.time()))

执行结果:

date.today(): 2018-11-10
date.resolution: 1 day, 0:00:00
date.max: 9999-12-31
date.min: 0001-01-01
date.fromtimestamp(): 2018-11-10

date提供的实例方法和属性:

· date.year、date.month、date.day:年、月、日;

· date.replace(year, month, day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)

· date.timetuple():返回日期对应的time.struct_time对象;

· date.toordinal():返回日期对应的Gregorian Calendar日期;

· date.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;

· data.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;

· date.isocalendar():返回格式如(year,month,day)的元组;

· date.isoformat():返回格式如'YYYY-MM-DD’的字符串;

· date.strftime(fmt):自定义格式化字符串。

在下面详细讲解。

 from datetime import *

 now = date(2018,11,10)
tomorrow = now.replace(day = 11)
print("now:",now,"tomorrow:",tomorrow)
print("timetuple()",now.timetuple())
print('weekday():' , now.weekday())
print('isoweekday():' , now.isoweekday())
print('isocalendar():' , now.isocalendar())
print('isoformat():' , now.isoformat())

执行结果:

now: 2018-11-10 tomorrow: 2018-11-11
timetuple() time.struct_time(tm_year=2018, tm_mon=11, tm_mday=10, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=314, tm_isdst=-1)
weekday(): 5
isoweekday(): 6
isocalendar(): (2018, 45, 6)
isoformat(): 2018-11-10

date还对某些操作进行了重载,它允许我们对日期进行如下一些操作:

· date2 = date1 + timedelta  # 日期加上一个间隔,返回一个新的日期对象(timedelta将在下面介绍,表示时间间隔)

· date2 = date1 - timedelta   # 日期隔去间隔,返回一个新的日期对象

· timedelta = date1 - date2   # 两个日期相减,返回一个时间间隔对象

· date1 < date2  # 两个日期进行比较

注: 对日期进行操作时,要防止日期超出它所能表示的范围。

使用例子:

 from datetime import *

 now = date.today()
tomorrow = now.replace(day = 11 )
delta = tomorrow - now
print('now:' , now, ' tomorrow:' , tomorrow )
print('timedelta:' , delta )
print(now + delta)
print(tomorrow > now)

执行结果:

now: 2018-11-10  tomorrow: 2018-11-11
timedelta: 1 day, 0:00:00
2018-11-11
True

Time

time类表示时间,由时、分、秒以及微秒组成。time类的构造函数如下:

class datetime.time(hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ) :各参数的意义不作解释,这里留意一下参数tzinfo,它表示时区信息。注意一下各参数的取值范围:hour的范围为[0, 24),minute的范围为[0, 60),second的范围为[0, 60),microsecond的范围为[0, 1000000)。

time类定义的类属性:

· time.min、time.max:time类所能表示的最小、最大时间。其中,time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999);

· time.resolution:时间的最小单位,这里是1微秒;

time类提供的实例方法和属性:

· time.hour、time.minute、time.second、time.microsecond:时、分、秒、微秒;

· time.tzinfo:时区信息;

· time.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ):创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变);

· time.isoformat():返回型如"HH:MM:SS"格式的字符串表示;

· time.strftime(fmt):返回自定义格式化字符串。在下面详细介绍;

使用例子:

 from datetime import *

 tm = time(23, 46, 10)
print ('tm:', tm)
print ('hour: %d, minute: %d, second: %d, microsecond: %d'% (tm.hour, tm.minute, tm.second, tm.microsecond))
tm1 = tm.replace(hour = 20)
print ('tm1:', tm1)
print ('isoformat():', tm.isoformat())

执行结果:

tm: 23:46:10
hour: 23, minute: 46, second: 10, microsecond: 0
tm1: 20:46:10
isoformat(): 23:46:10

像date一样,也可以对两个time对象进行比较,或者相减返回一个时间间隔对象。这里就不提供例子了

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(): 2018-11-10 17:11:06.015900
now(): 2018-11-10 17:11:06.015899
utcnow(): 2018-11-10 09:11:06.015899
fromtimestamp(tmstmp): 2018-11-10 17:11:06.015900
utcfromtimestamp(tmstmp): 2018-11-10 09:11:06.015900

datetime类提供的实例方法与属性(很多属性或方法在date和time中已经出现过,在此有类似的意义,这里只罗列这些方法名,具体含义不再逐个展开介绍,可以参考上文对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)

像date一样,也可以对两个datetime对象进行比较,或者相减返回一个时间间隔对象,或者日期时间加上一个间隔返回一个新的日期时间对象。这里不提供详细的例子,看客自己动手试一下~~

格式字符串

datetime、date、time都提供了strftime()方法,该方法接收一个格式字符串,输出日期时间的字符串表示。下表是从python手册中拉过来的,我对些进行了简单的翻译(翻译的有点噢口~~)。

格式字符 意义

%a 星期的简写。如 星期三为Web
%A 星期的全写。如 星期三为Wednesday
%b 月份的简写。如4月份为Apr
%B月份的全写。如4月份为April
%c: 日期时间的字符串表示。(如: 04/07/10 10:43:39)
%d: 日在这个月中的天数(是这个月的第几天)
%f: 微秒(范围[0,999999])
%H: 小时(24小时制,[0, 23])
%I: 小时(12小时制,[0, 11])
%j: 日在年中的天数 [001,366](是当年的第几天)
%m: 月份([01,12])
%M: 分钟([00,59])
%p: AM或者PM
%S: 秒(范围为[00,61],为什么不是[00, 59],参考python手册~_~)
%U: 周在当年的周数当年的第几周),星期天作为周的第一天
%w: 今天在这周的天数,范围为[0, 6],6表示星期天
%W: 周在当年的周数(是当年的第几周),星期一作为周的第一天
%x: 日期字符串(如:04/07/10)
%X: 时间字符串(如:10:43:39)
%y: 2个数字表示的年份
%Y: 4个数字表示的年份
%z: 与utc时间的间隔 (如果是本地时间,返回空字符串)
%Z: 时区名称(如果是本地时间,返回空字符串)
%%: %% => %

 from datetime import *

 dt = datetime.now()
print('(%Y-%m-%d %H:%M:%S %f): ', dt.strftime('%Y-%m-%d %H:%M:%S %f'))
print('(%Y-%m-%d %H:%M:%S %p): ', dt.strftime('%y-%m-%d %I:%M:%S %p'))
print('%%a: %s ' % dt.strftime('%a'))
print('%%A: %s ' % dt.strftime('%A'))
print('%%b: %s ' % dt.strftime('%b'))
print('%%B: %s ' % dt.strftime('%B'))
print('日期时间%%c: %s ' % dt.strftime('%c'))
print('日期%%x:%s ' % dt.strftime('%x'))
print('时间%%X:%s ' % dt.strftime('%X'))
print('今天是这周的第%s天 ' % dt.strftime('%w'))
print('今天是今年的第%s天 ' % dt.strftime('%j'))
print('今周是今年的第%s周 ' % dt.strftime('%U'))

执行结果:

(%Y-%m-%d %H:%M:%S %f):  2018-11-10 17:14:09 771860
(%Y-%m-%d %H:%M:%S %p): 18-11-10 05:14:09 PM
%a: Sat
%A: Saturday
%b: Nov
%B: November
日期时间%c: Sat Nov 10 17:14:09 2018
日期%x:11/10/18
时间%X:17:14:09
今天是这周的第6天
今天是今年的第314天
今周是今年的第44周

python模块之datetime方法详细介绍的更多相关文章

  1. python模块之calendar方法详细介绍

    calendar,是与日历相关的模块.calendar模块文件里定义了很多类型,主要有Calendar,TextCalendar以及HTMLCalendar类型.其中,Calendar是TextCal ...

  2. python模块之time方法详细介绍

    >>> import time >>> dir(time) ['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__nam ...

  3. 04-vi使用方法详细介绍

    vi使用方法详细介绍 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版 ...

  4. WQL语言简介和WQL测试工具wbemtest.exe使用方法详细介绍

    这篇文章主要介绍了WQL语言简介和WQL测试工具wbemtest.exe使用方法详细介绍,WQL是指Windows管理规范查询语言,需要的朋友可以参考下 WQL就是WMI中的查询语言,WQL的全称是W ...

  5. Python模块学习 ---- datetime

    Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块我在之前的文章已经有所介绍,它提供的接口与C标准库time.h基本一致.相比于time模块, ...

  6. python开发_常用的python模块及安装方法

    adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctype ...

  7. 常用的python模块及安装方法

    adodb:我们领导推荐的数据库连接组件 bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctyp ...

  8. PHP之十六个魔术方法详细介绍

    PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用.这里进行详细介绍,感兴趣的小伙伴们可以参考一下. PHP中把以两个下划线__开头 ...

  9. python模块之datetime

    相比于time模块,datetime模块的接口则更直观.更容易调用 datetime模块定义了下面这几个类: datetime.date:表示日期的类.常用的属性有year, month, day: ...

随机推荐

  1. 【LeetCode】137. Single Number II

    题目: Given an array of integers, every element appears three times except for one. Find that single o ...

  2. office2016_windows永久激活查看方法

    YC7N8-G7WR6-9WR4H-6Y2W4-KBT6X 首先要保证你安装了 百云址:http://pan.baidu.com/share/home?uk=4011207371 如果你是win8,w ...

  3. HDU1026(延时迷宫:BFS+优先队列)

    Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  4. zk 02之 Windows安装和使用zookeeper

    本文介绍的 Zookeeper 是以 3.4.5 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非 ...

  5. CRT Library Features

    CRT Library Features The new home for Visual Studio documentation is Visual Studio 2017 Documentatio ...

  6. 在java web项目中编写自己的代码生成器

    在java web项目中编写自己的代码生成器

  7. "LPWSTR" 类型的实参与"const.char *"类型形参不兼容

    CString csPlus; CString csSummand; m_PlusNumber.GetWindowTextW(csPlus); m_Summand.GetWindowTextW(csS ...

  8. ML 徒手系列 最大似然估计

    1.最大似然估计数学定义: 假设总体分布为f(x,θ),X1,X2...Xn为总体采样得到的样本.其中X1,X2...Xn独立同分布,可求得样本的联合概率密度函数为: 其中θ是需要求得的未知量,xi是 ...

  9. SharePoint Project Server List 列表CURD操作使用rest api接口

    //#region 界面交互代码 var issuesUtils = issuesUtils || {}; (function () { /** * 点击问题提处理方案按钮事件 */ issuesUt ...

  10. web实现本地缓存的方法

    Cookie(或者Cookies) 指一般网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). cookie一般通过http请求中在头部一起发送到服务器端.一条c ...