python日期时间使用详解和定时器使用讲解

    python中一个关于日期时间非常重要的模块是datetime模块,使用前先将它导入到项目中,import datetime。

获取当前时间

 
now=datetime.datetime.now()#此时返回的是一个datetime.datetime对象,并不是我想要的美观的字符串格式,所以要对日期进行格式化

格式化时间(字符串):

now=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")  #结果为:2018-07-02 18:33:48

时间的三种存在方式:时间对象,时间字符串,时间戳:

(1)datetime字符串

now = datetime.datetime.now()
now.strftime('%Y-%m-%d %H:%M:%S')
#输出2018-7-02 16:26:23.870105

(2)字符串转datetime:

time_str = '2012-03-05 16:26:23'
date_time = datetime.datetime.strptime(t_str, '%Y-%m-%d %H:%M:%S')

(3)时间戳转时间对象:

time1 = time.localtime()
time1_str = datetime.datetime.fromtimestamp(time1)

日期比较操作:

    在datetime模块中有timedelta类,这个类的对象用于表示一个时间间隔,比如两个日期或者时间的差别。

构造方法:

datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

所有的参数都有默认值0,这些参数可以是int或float,正的或负的。可以通过timedelta.days、tiemdelta.seconds等获取相应的时间值。

1.当前的时间上加一天或一年减一天等操作:
from datetime import datetime,timedelta  
  
now = datetime.now()  
  
yestoday = now - timedelta(days=1)  
tommorow = now + timedelta(days=1)  
  
next_year = now + timedelta(days = 365)  

2.两个日期相差多少天:

d1 = datetime.datetime.strptime('2012-03-05 17:41:20', '%Y-%m-%d %H:%M:%S')
d2 = datetime.datetime.strptime('2012-03-02 17:41:20', '%Y-%m-%d %H:%M:%S')
delta = d1 - d2

print (delta.days)#输出3

3.今天的n天后的日期:

now = datetime.datetime.now()
delta = datetime.timedelta(days=3)
n_days = now + delta
print n_days.strftime('%Y-%m-%d %H:%M:%S')#输出:2012-03-08 17:44:50 输出:2012-03-08 17:44:50 

4.计算两个时间相差多少秒,分钟,小时:

    d1 = datetime.datetime.strptime('2012-03-05 17:41:20', '%Y-%m-%d %H:%M:%S')
    d2 = datetime.datetime.strptime('2012-03-02 17:41:20', '%Y-%m-%d %H:%M:%S')
    delta = d1 - d2
    second=delta.seconds #多少秒
    min=second/60   #多少分钟
    hour=second/3600#多少小时

5.返回现在是星期几:

now_week=datetime.datetime.now().weekday()  #因为方法weekday()返回的是0~6的数字,0代表星期一

python中时间日期格式化符号:

%a 星期几的简写
%A 星期几的全称
%b 月分的简写
%B 月份的全称
%c 标准的日期的时间串
%C 年份的后两位数字
%d 十进制表示的每月的第几天
%D 月/天/年
%e 在两字符域中,十进制表示的每月的第几天
%F 年-月-日
%g 年份的后两位数字,使用基于周的年
%G 年分,使用基于周的年
%h 简写的月份名
%H 24小时制的小时
%I 12小时制的小时
%j 十进制表示的每年的第几天
%m 十进制表示的月份
%M 十时制表示的分钟数
%n 新行符
%p 本地的AM或PM的等价显示
%r 12小时的时间
%R 显示小时和分钟:hh:mm
%S 十进制的秒数
%t 水平制表符
%T 显示时分秒:hh:mm:ss
%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
%U 第年的第几周,把星期日做为第一天(值从0到53)
%V 每年的第几周,使用基于周的年
%w 十进制表示的星期几(值从0到6,星期天为0)
%W 每年的第几周,把星期一做为第一天(值从0到53)
%x 标准的日期串
%X 标准的时间串
%y 不带世纪的十进制年份(值从0到99)
%Y 带世纪部分的十制年份
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号

    python中的定时器需要用到threading模块,使用前要先导入。

import threading

def fun_timer():
    print('Hello Timer!')

timer = threading.Timer(3, fun_timer)   #指定3秒钟触发fun_timer()函数的内容,特别注意在构造函数中不要加括号。
timer.start()

另外再补充一下,一个很好用的第三方模块:python-dateutil,安装方式:pip install python-dateutil,可以很好的完成月份的加减:

import datetime
from dateutil.relativedelta import relativedelta
 
#获取当前时间
datetime_now = datetime.datetime.now()

#计算今天日期的2个月后的日期,也就是将月份加三,即使在12月份开始算,年份也会相应加上,返回的数据类型是datetime.datetime:
datetime_three_month_ago = datetime_now + relativedelta(months=2)





运行下面代码:
import datetime
from dateutil.relativedelta import relativedelta

date = datetime.datetime.strptime("2018-12-31","%Y-%m-%d")

datetime_three_month_ago = date + relativedelta(months=3)

print (datetime_three_month_ago,type(datetime_three_month_ago))



结果:
2019-03-31 00:00:00 <class 'datetime.datetime'>

猜你喜欢

转载自blog.csdn.net/qq_34493908/article/details/80888052