python的datetime模块

一 Python 中 日期类型 与字符串互转的问题

  • 1  字符串  转成 datetime 类型
  • 2  datetime 类型 转成 字符串

二  日期相加减的问题

三 datetime模块

1.datetime中的常量

  • datetime.MINYEAR,表示datetime所能表示的最小年份,MINYEAR = 1。
  • datetime.MAXYEAR,表示datetime所能表示的最大年份,MAXYEAR = 9999。

2.datetime中的类

  • datetime.date:表示日期的类。常用的属性有year, month, day;
  • datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
  • datetime.datetime:表示日期时间。
  • datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
  • datetime.tzinfo:与时区有关的相关信息。

3.date类 
date类表示一个由年、月、日组成的日期。 


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

  • date.max、date.min:date对象所能表示的最大、最小日期;
  • date.resolution:date对象表示日期的最小单位。这里是天。
  • date.today():返回一个表示当前本地日期的date对象;
  • date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;
  • datetime.fromordinal(ordinal):将Gregorian日历时间转换为date对象;(Gregorian Calendar :一种日历表示方法,类似于我国的农历,西方国家使用比较多,此处不详细展开讨论。)

②实例方法和属性 
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):自定义格式化字符串。在下面详细讲解。

③date支持的其他操作

  • date2 = date1 + timedelta #日期加上一个间隔,返回一个新的日期对象)
  • date2 = date1 - timedelta #日期隔去间隔,返回一个新的日期对象
  • timedelta = date1 - date2 #两个日期相减,返回一个时间间隔对象
  • date1 < date2 #两个日期进行比较

4.Time类 
time类表示时间,由时、分、秒以及微秒组成。 
①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):返回自定义格式化字符串。在下面详细介绍;

像date一样,也可以对两个time对象进行比较,或者相减返回一个时间间隔对象。

5.datetime类 
datetime是date与time的结合体,包括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对象;

②datetime类提供的实例方法与属性

  • 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对象。
  • datetime.timetuple ():返回一个时间元素, 等价于time.localtime()。
  • datetime. utctimetuple():返回UTC时间元组对象, 等价于time.localtime()。
  • datetime. toordinal ():返回日期对应的Gregorian Calendar 日期。
  • datetime. weekday ():返回 0 ~ 6 表示星期几(星期一是0,依此类推)。
  • datetime. isocalendar ():返回一个三元组格式 (year, month, day)。
  • datetime. isoformat ([ sep] ):返回一个 ISO 8601 格式的日期字符串,如 “YYYY-MM-DD”的字符串。
  • datetime. ctime():返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple()));
  • datetime. strftime (format):返回自定义格式化字符串表示日期。

像date一样,也可以对两个datetime对象进行比较,或者相减返回一个时间间隔对象,或者日期时间加上一个间隔返回一个新的日期时间对象。 
6.timedelta与tzinfo类 
①timedelta类 
datetime.timedelta对象代表两个时间之间的的时间差,两个date或datetime对象相减时可以返回一个timedelta对象。 
timedelta包含数据days、seconds、microseconds,表示天数、秒数、微秒数,包含方法total_seconds() ,表示时间间隔的总秒数。 
②tzinfo类 
tzinfo:与时区有关的相关信息。

一些具体案例情况

"""
时间模块的demo
这里主要介绍了
1.字符串 转成 datetime 类型
2.datetime 类型 转成 字符串
"""

# 字符串  转成 datetime 类型
"""
def strptime(cls, date_string, format):pass 这个函数 需要传入两个参数 date_string 即日期字符串, format 即日期的格式
"""
import datetime
datestr1 = '2017-03-28'
datestr2 = '2017-03-31'
date1 = datetime.datetime.strptime(datestr1, '%Y-%m-%d')
date2 = datetime.datetime.strptime(datestr2, '%Y-%m-%d')
diff_days = (date2 - date1)
diff_days = (date2 - date1).days
print(diff_days)
print(date1.year)
print(type(datestr1))
print('---------------------------------------------')

结果如下:
3
2017
<class 'str'>
---------------------------------------------

"""
def strftime(self, fmt: Union[str, unicode]) -> str: ...
"""
# datetime 类型 转成 字符串
import datetime
date_0 = datetime.datetime.now()
datestr = date_0.strftime('%Y-%m-%d')
datestr2 = str(date_0)
dt, _ = datestr2.split('.')
print(date_0)
print(datestr)
print(datestr2)
print(dt)
print(type(date_0))
print('---------------------------------------------')
结果如下:
2018-07-17 13:12:26.216551
2018-07-17
2018-07-17 13:12:26.216551
2018-07-17 13:12:26
<class 'datetime.datetime'>
---------------------------------------------

"""
日期相加减的问题
在datetime模块,有一个类 timedelta 来进行日期的相加减操作 
delta:希腊语字母表第四字母δ,[数]变量增量
"""

from  datetime import datetime,date,time,timedelta
dt = datetime(2018, 3, 1, 19, 40, 30)
dt = datetime(2018, 3, 1, 19, 40, 30, 356102)
print(dt,type(dt))
结果如下:
2018-03-01 19:40:30.356102 <class 'datetime.datetime'>

#1. 一个日期 向前或向后推迟几天
dt2 = dt+timedelta(days=5)
print(dt2)
#1. 一个日期 向前或向后推迟几小时
now = datetime.now()
print(now)
hours = timedelta(hours=3)
next = now+hours
print(next)
结果如下:
2018-03-06 19:40:30.356102
2018-07-17 13:12:26.216551
2018-07-17 16:12:26.216551

#3  同理 还可以支持  seconds , milliseconds,minutes,weeks 分别是 秒 ,毫秒, 分钟, 周...

def __new__(cls, days=None, seconds=None, microseconds=None, milliseconds=None, minutes=None,
            hours=None, weeks=None): # known case of datetime.timedelta.__new__)
   pass

 参考完档:

https://blog.csdn.net/yl2isoft/article/details/52077991

猜你喜欢

转载自blog.csdn.net/qq_20412595/article/details/81079664