目录

  • datetime标准库 有四个主要的模块:
  • 1)datetime 中的 datetime常用方法。
  • 2)datetime 中的 timedelta 时间加减。
  • 3)把 datetime 类型转为固定格式的字符串
  • 4)把 固定格式的字符表示的日期,转为日期格式。
  • time 标准库
  • 时间日期格式化输出
  • 先是 datetime 模块的格式化
  • 再是 time 模块的格式化


datetime标准库 有四个主要的模块:

1• datetime 处理日期和时间同时出现的情况。
2• date 处理年、月、日。
3• time 处理时、分、秒和分数。
4• timedelta 处理日期和/ 或时间间隔。

1)datetime 中的 datetime常用方法。

from datetime import datetime

utc_now = datetime.utcnow()  # 获取当前的UTC时间。
now = datetime.now()   		 # 获取当前的本地时间。
now.month		   			 # 提取月份,为 int 型。
now.day		        		 # 提取日,  为 int 型。
now.hour		    		 # 提取时钟,为 int 型。
now.minute         		     # 提取分钟,为 int 型。
now.second           		 # 提取秒钟,为 int 型。
now.microsecond     		 # 提取微秒,为 int 型。
now.date()        		     # 提取日期  年月日。为 <class 'datetime.date'> 格式
now.time() 		    		 # 提取时间  时分秒。为 <class 'datetime.time'> 格式
datetime.combine(now.date(), now.time() )    # 把提取出来的“日期”和“时间”重新合并。

now_stamp = now.timestamp()                      # 把日期对象转化为时间戳。
now = datetime.fromtimestamp(now_stamp)          # 把时间戳转化为本地的日期对象。
utc_now = datetime.utcfromtimestamp(now_stamp)    # 把时间戳转化为UTC的日期对象。

now.isoformat()        # 把日期对象转化为“字符串”。变为:'2019-07-17T23:20:16.716957'
datetime.ctime(now)    # 把日期对象转化为“字符串”。变为:‘Wed Jul 17 23:17:52 2019’

>>> some_date = datetime(2019,6,26,22,15,30)    # 根据提供的数据生成特定的日期。
												# 参数最少为三个“年月日”,
												# 最多8个,第七个为 为秒,第八个为时区对象。
>>> some_date
datetime.datetime(2019, 6, 26, 22, 15, 30)

datetime 中的date 和 time 模块可以类似看成是 datetime 的拆分。

2)datetime 中的 timedelta 时间加减。

>>> from datetime import datetime, timedelta
>>> now = datetime.now() 
>>> now
datetime.datetime(2019, 6, 26, 21, 44, 48, 989626)

>>> add_hours = timedelta(hours=2)    # 增加2小时
>>> now + add_hours
datetime.datetime(2019, 6, 26, 23, 44, 48, 989626)    # 从21时,变为23时。

>>> reduce_time = timedelta(days=-1, hours=-3)    # 减1天,3小时。
>>> now + reduce_time
datetime.datetime(2019, 6, 25, 18, 44, 48, 989626)

Tip小技巧: datetime 也可以直接相减 获得 timedelta。

3)把 datetime 类型转为固定格式的字符串

见下方的 时间日期 格式化 内容

4)把 固定格式的字符表示的日期,转为日期格式。

用 strptime(date_string, format) 方法。
第一个参数为 日期字符串,第二个参数为与之对应的匹配格式。

import datetime

t = '2019/12/25 19:48:0'
tt = datetime.datetime.strptime(t, "%Y/%m/%d %H:%M:%S")

注:用 datetime.fromisoformat()方法,可以把由isoformat()生成的字符串格式转为对应的日期格式。

详细资料见下方的日期格式化内容。

time 标准库

不同于 datetime 里的 time 模块。

>>> import time
>>> now = time.time()    #获取当前的时间戳(时间纪元)
>>> now
1561557399.6905515

>>> time.ctime(now)	     # 把时间戳转化为字符串。
'Wed Jun 26 21:56:39 2019'

>>>now_local = time.localtime(now)    # 把时间戳转化为当地系统时间。
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=26, tm_hour=21, tm_min=56, tm_sec=39, 
tm_wday=2, tm_yday=177, tm_isdst=0)

>>> time.gmtime(now)	  # 把时间戳转化为UTC时间。
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=26, tm_hour=13, tm_min=56, tm_sec=39, 
tm_wday=2, tm_yday=177, tm_isdst=0)

>>> time.mktime(now_loacl)   # 把  time.struct_time 日期转为 时间戳。
1561557399.0

time.ctime( ),time.localtime( ),time.gmtime( )
这三个方法如果不带参数,那么参数默认为当前的时间。

其中 time.struct_time元组中的:
   tm_wday 为一周中的第几天,0到6 (0是周一)。
      tm_yday 为一年中的第几天。
   tm_isdst :1 表示时间是夏令时,0 表示非夏令时,-1 表示时间不确定是否是夏令时。

time.mktime() 的参数其实也可以自己构造,只要传入一个含有9个元素的元组就行,
例如:time.mktime((2019,6,26,21,56,39,0,0,0)) 最后三个参数可以全为0。

时间日期格式化输出

strftime() 把时间日期转化为字符串:

先是 datetime 模块的格式化

>>> from datetime import datetime
>>> a =  datetime.now()
>>> a
datetime.datetime(2019, 6, 26, 23, 11, 3, 826789)

>>> a.strftime('%Y-%m-%d, %H-%M-%S')    # 用 strftime() 把 日期格式转为自定义的格式输出。
'2019-06-26, 23-11-03'

再是 time 模块的格式化

>>> import time
>>> a = time.localtime()
>>> a
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=26, tm_hour=23, tm_min=15, tm_sec=33, tm_wday=2, tm_yday=177, tm_isdst=0)

>>> time.strftime('%Y-%m-%d, %H-%M-%S', a)    # 用 strftime() 把 日期格式转为自定义的格式输出。
'2019-06-26, 23-15-33'

注:格式化的自定义格式不能用汉字或汉字标点符号即不能这样:strftime(’%Y年%m月%d日’)。否则会报错。

datetime python 去掉分钟 datetime.now python_datetime

datetime python 去掉分钟 datetime.now python_python_02