python常用模块之time和datetime模块

一、time模块

1、time模块介绍

Python中有两个模块可以完成时间操作:time和datetime,其中time有这几种方式来表示时间:

  1. 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
  2. 格式化的时间字符串(Format String)
  3. 结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)

2、time模块的使用

import time

# 1、时间戳格式
print(time.time()) # 1582293600.059389

# 2、 结构化时间
print(time.localtime())  # 本地时区的struct_time
print(time.gmtime())     # UTC时区的struct_time
'''
time.struct_time(tm_year=2020, tm_mon=2, tm_mday=21, tm_hour=22, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=52, tm_isdst=0)
time.struct_time(tm_year=2020, tm_mon=2, tm_mday=21, tm_hour=14, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=52, tm_isdst=0)
# 我们的时间是东八区和UTC标准时间相隔8个小时
'''
# 3、格式化时间
print(time.strftime('%Y-%m-%d %H:%M:%S')) #2020-02-21 22:00:00

3、格式转换

在这里插入图片描述

import time
# 1、时间戳和结构化时间相互转换
print(time.localtime(1582290777.6476405))  # 将时间戳转化为结构化时间
# >>> time.struct_time(tm_year=2020, tm_mon=2, tm_mday=21, tm_hour=21, tm_min=12, tm_sec=57, tm_wday=4, tm_yday=52, tm_isdst=0)

print(time.mktime(time.localtime())) # mktime(t) : 将一个struct_time转化为时间戳。
# >>> 1582293795.0

# 2、结构化时间和格式化时间相互转换
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))   # 将结构化时间转化为格式化时间
# >>>2020-02-21 22:03:15

print(time.strptime('2020-02-21 21:19:43', '%Y-%m-%d %X'))  # 将格式化时间转化为结构化时间
# >>> time.struct_time(tm_year=2020, tm_mon=2, tm_mday=21, tm_hour=21, tm_min=19, tm_sec=43, tm_wday=4, tm_yday=52, tm_isdst=-1)
# time.strptime('string', [format]) 在这个函数中,format默认为:"%Y %m %d %H:%M:%S"。


4、time模块常用函数

**1. time.sleep(secs) **

线程休眠指定时间,单位为秒。

import time
start = time.time()
time.sleep(2)
stop = time.time()
print('间隔时间为:%.4s秒' %(stop-start))  # 间隔时间为:2.00秒

2.process_time()

返回当前进程的系统和用户CPU时间总和的值(以小数秒为单位)作为浮点数。python3.8版本取代了原本的colck()

def procedure():
    a=0
    for i in range(10000):
       a+=1
       print(a)

to = time.process_time()
procedure()
t1=time.process_time()
print(t1-to)

'''
通常time.process_time()也用在测试代码时间上,根据定义,它在整个过程中。返回值的参考点未定义,因此我们测试代码的时候需要调用两次,做差值。
注意process_time()不包括sleep()休眠时间期间经过的时间。

'''

二、datetime模块

1、datetime模块的使用

和time相比,datetime的功能更强大,以下分别是两个模块的具体信息。

>>> dir(time)
['__doc__', '__name__', '__package__', 'accept2dyear', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'gmtime', 
'localtime', 'mktime', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname', 'tzset']
>>> dir(datetime.datetime)
['__add__', '__class__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', 
'__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__radd__', '__reduce__', '__reduce_ex__', '__repr__',
 '__rsub__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', 'astimezone', 'combine', 'ctime', 
'date', 'day', 'dst', 'fromordinal', 'fromtimestamp', 'hour', 'isocalendar', 'isoformat', 'isoweekday', 'max', 'microsecond',
 'min', 'minute', 'month', 'now', 'replace', 'resolution', 'second', 'strftime', 'strptime', 'time', 'timetuple', 'timetz', 'today', 
'toordinal', 'tzinfo', 'tzname', 'utcfromtimestamp', 'utcnow', 'utcoffset', 'utctimetuple', 'weekday', 'year']

datetime模块的调用方法
[参考博客—Python datetime模块详解]


print(datetime.datetime.now())  # 获取当前时间
print(datetime.date.fromtimestamp(time.time()))  # 时间戳直接转成日期格式 2016-08-19
print(datetime.datetime.now() + datetime.timedelta(3))  # 当前时间+3天
print(datetime.datetime.now() + datetime.timedelta(-3))  # 当前时间-3天
print(datetime.datetime.now() + datetime.timedelta(hours=3))  # 当前时间+3小时
print(datetime.datetime.now() + datetime.timedelta(minutes=30))  # 当前时间+30分

三、python中常用格式化日期符号

python中时间日期格式化符号有:
%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     当前时区的名称
%%     %号本身     

四、简易时间管理器

简易时间管理器,初学者可以用来加深对time模块的认识

'''
简易时间管理器,初学者可以用来加深对time模块的认识
version:01
author:金鞍少年
Date:2020-02-20

'''
import time
while True:
    input("欢迎使用时间管理器(按回车键继续)")
    name = input("请输入本次任务名称:")
    sk_time = int(input("为本次任务分配时间?(输入N分钟):"))
    dq_time = time.time()#获取当前时间戳
    gssj_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

    print('此次任务信息\n 我要完成的任务:%s\n 我至少要专注:%d分钟'%(name,sk_time))
    for x in range(sk_time*60,0,-1):
        info='还剩'+str(x)+'秒,继续加油哦'
        print(info,end='')
        time.sleep(1) #1秒间隔
        print("\b"*(len(info)*2),end="",flush=True)
    print('你已经专注了 %d 分钟,很棒!'%sk_time)

    q=input("建立一个新任务请按 x, 退出时间日志记录器并记录请按 y:")
    if q=='y':
        print('记录成功!')
        end=time.time()#获取截止时间
        end_time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) 
        shijian=gssj_time+'----'+end_time+'\n' 
        with open('lists/times.txt', 'a', encoding='utf-8') as f:
            f.write('项目%s:\n'%name)
            f.write('分配的项目时间为:%s分钟\n'%sk_time)
            f.write('实际项目时间为:'+shijian) 
            break
    else:
        q == 'x'
        print('重启服务')

print('愿被你善待的时光,予你美好的回赠。')
发布了46 篇原创文章 · 获赞 37 · 访问量 4523

猜你喜欢

转载自blog.csdn.net/weixin_42444693/article/details/104436619