Python是一种优雅而简单的编程语言,具有出色的稳定性和可读性,广泛应用于数据科学、人工智能、网络编程和网站开发等领域。时间和日期的处理在Python编程中非常基础且重要,在本文中我们将以Python的时间和日期模块(time和datetime)为基础,深入讲解Python如何处理时间和日期,并介绍一些常见的应用场景。
一、time模块
Python的time模块是处理时间的基础模块,常用于获取当前时间、计时、延时等操作。使用前需要使用 “import time” 在代码中导入模块。
1、 获取当前时间
>>> import time
>>> current_time = time.localtime()
>>> print(current_time)
time.struct_time(tm_year=2021, tm_mon=4, tm_mday=16, tm_hour=14, tm_min=23, tm_sec=18, tm_wday=4, tm_yday=106, tm_isdst=0)
上述代码中,time.localtime()函数会返回一个包含当前时间的time.struct_time对象,该对象包含年月日,时分秒等信息。
2、计时
>>> import time
>>> start_time = time.time()
>>> time.sleep(2)
>>> end_time = time.time()
>>> print(end_time-start_time)
2.0007262229919434
上述代码中通过 time.time() 获取系统时间戳来进行计时,sleep(2)表示程序休息2秒,即计时2秒钟。返回的是按秒计算的浮点数,两个参数相减即可得到程序运行时间。
3、格式化时间
>>> import time
>>> current_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
>>> print(current_time)
2021-04-16 14:41:43
上述代码中将时间格式化成指定的格式,常用的格式有 %Y(年)、%m(月)、%d(日)、%H(时)、%M(分)、%S(秒) 等。time.localtime()返回的时间是struct_time类型,strftime()将其格式化成指定的字符串格式。
二、datetime模块
Python的datetime模块也是处理时间的重要模块,比time模块更加高级、灵活。datetime提供了时间和日期的解析、格式化、加减、比较等的操作。
1、获取当前日期和时间
>>> from datetime import datetime
>>> current_time = datetime.now()
>>> print(current_time)
2021-04-16 14:49:35.631708
上述代码中,使用datetime.now()获取当前日期和时间。
2、获取指定日期
>>> from datetime import datetime
>>> specific_time = datetime(2021, 4, 16, 16, 30, 0)
>>> print(specific_time)
2021-04-16 16:30:00
上述代码中,通过datetime(year, month, day, hour, minute, second)构造函数,获取指定日期和时间。
3、加减时间
>>> from datetime import datetime, timedelta
>>> current_time = datetime.now()
>>> one_day_ago = current_time - timedelta(days=1)
>>> print(one_day_ago)
2021-04-15 14:55:46.073013
上述代码中,通过timedelta()参数指定时间间隔,以天(days)为单位进行加减,返回的是一个新的datetime对象。
4、比较时间大小
>>> from datetime import datetime
>>> time_a = datetime(2021, 4, 16, 16, 0, 0)
>>> time_b = datetime(2021, 4, 16, 14, 0, 0)
>>> print(time_a > time_b)
True
上述代码中,使用比较运算符进行比较两个时间,返回True或False。
三、常见应用场景
1、计时器
>>> import time
>>> def countdown(n):
... while n > 0:
... print(n)
... n = n - 1
... time.sleep(1)
... print("Start!")
>>> countdown(3)
3
2
1
Start!
上述代码中,定义一个计时器函数countdown(),使用 time.sleep(1) 使程序运行时间延长1秒。通过输入countdown(3)将之前定义好的计时器倒数数秒,到达0结束并提示 "Start!"。这里提供一种最基础的计时器实现思路。
2、日志记录
>>> import logging
>>> LOG_FORMAT = "%(asctime)s %(levelname)s %(message)s"
>>> logging.basicConfig(filename="log.log", level=logging.DEBUG, format=LOG_FORMAT)
>>> logging.debug("This is a debug message")
#输出到文件log.log文件:
2021-04-16 15:31:13,484 DEBUG This is a debug message
上述代码中,使用 logging 模块记录日志,配置基本Log信息格式信息,将日志写入到 log.log 文件中。
3、时间戳转换
>>> from datetime import datetime
>>> timestamp = 1618645721
>>> dt_object = datetime.fromtimestamp(timestamp)
>>> print(dt_object)
2021-04-17 03:22:01
上述代码中, 通过datetime.fromtimestamp(timestamp)将时间戳转成“YYYY-MM-DD HH:MM:SS”格式的日期。其中datetime.fromtimestamp() 返回一个以本地时间表示的新datetime对象。
4、时间与字符串转换
>>> from datetime import datetime
>>> str_time = "2021-04-17 01:21:20"
>>> dt_object = datetime.strptime(str_time, '%Y-%m-%d %H:%M:%S')
>>> print(dt_object)
2021-04-17 01:21:20
上述代码中,使用 datetime.datetime.strptime(date_string, format_string)将字符串转成日期格式。其中datetime.datetime.strptime(date_string, format_string)将字符串解析成为日期变量,其中date_string为要解析的字符串,format_string为字符串的格式,例如%Y-%m-%d %H:%M:%S表示YYYY-MM-DD HH:MM:SS格式的日期。
总结
在Python中处理时间和日期非常方便,time和datetime模块为我们提供了很多强大的函数和方法。通过对本文的学习,相信您已经了解了如何使用Python处理时间和日期,掌握了一些常见的应用场景。相信这些知识对于您日后在Python编程中处理时间与日期会有很大的帮助。