常用模块

time和datatime

在Python中,我们想要获取现在的时间,或者是进行时间的运算。那么我们都需要使用到时间模块,在Python中通过以下三种方式来表示时间

  • 时间戳(timestamp) 1970年1月1日距离现在经过的秒数
    • 用于时间间隔的计算
  • 按照某种格式显示的字符串(Format String)
    • 用于展示时间
  • 结构化时间(struct_time):struct_time元组共有9个元素(年、月、日、时、分、秒、一年中第几周、一年中第几天、夏令时) 
    • 用于单独获取时间的某一部分

time模块

time.strftime() 函数用于格式化时间(Format String),返回以可读字符串表示的当地时间,格式由参数 format 决定。

time.time() 获取当前时间的时间戳(timestamp) 即1970年1月1日距今经过的秒数

import time  # 导入内置模块time

print(time.time()) # 获取当前时间的时间戳  1642239329.413331

# 固定格式: %Y 表示年 %m 表示月 %d 表示日 %H 表示小时 %M 分钟 %S 秒
print(time.strftime('%Y-%m-%d %H:%M:%S'))  # 2022-01-15 17:39:39
print(time.strftime('%Y-%m-%d %X')) # 与上述结果一致
print(time.strftime('%Y')) # 2022

# %x是语言环境的"首选"日期格式。
# %X是语言环境的"首选"时间格式。
print(time.strftime('%x %X')) # 01/15/22 17:39:39  
%a    Locale’s abbreviated weekday name.     
%A    Locale’s full weekday name.     
%b    Locale’s abbreviated month name.     
%B    Locale’s full month name.     
%c    Locale’s appropriate date and time representation.     
%d    Day of the month as a decimal number [01,31].     
%H    Hour (24-hour clock) as a decimal number [00,23].     
%I    Hour (12-hour clock) as a decimal number [01,12].     
%j    Day of the year as a decimal number [001,366].     
%m    Month as a decimal number [01,12].     
%M    Minute as a decimal number [00,59].     
%p    Locale’s equivalent of either AM or PM.    (1)
%S    Second as a decimal number [00,61].    (2)
%U    Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0.    (3)
%w    Weekday as a decimal number [0(Sunday),6].     
%W    Week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0.    (3)
%x    Locale’s appropriate date representation.     
%X    Locale’s appropriate time representation.     
%y    Year without century as a decimal number [00,99].     
%Y    Year with century as a decimal number.     
%z    Time zone offset indicating a positive or negative time difference from UTC/GMT of the form +HHMM or -HHMM, where H represents decimal hour digits and M represents decimal minute digits [-23:59, +23:59].     
%Z    Time zone name (no characters if no time zone exists).     
%%    A literal '%' character.

time.localtime() 返回结构化时间(struct_time)

time.gmtime() UTC时间的结构化时间,比北京时间早8个小时

# 获取当前时间的结构化时间
print(time.localtime()) # 什么参数都不传表示获取当前时间的格式化时间
print(time.localtime(1642239329.413331)) # 可以传入一个时间戳 根据时间戳返回结构化时间 

# 结构化时间可以通过下标单独获取某个位置的数值
print(time.localtime()[0]) # 2022年
print(time.localtime()[1]) # 1月
print(time.localtime()[-2]) # 一年中的15天

'''
local_time()返回的结构化时间分析:
time.struct_time(tm_year=2022, tm_mon=1, tm_mday=15, tm_hour=17, tm_min=46, tm_sec=15, tm_wday=5, tm_yday=15, tm_isdst=0)

tm_year 表示年
tm_mon 表示月
tm_mday 表示日
tm_hour 表示时
tm_min 表示分
tm_sec 表示秒
tm_wday 表示周几
tm_yday 表示一年中的第几天
tm_isdst 判断是否是夏令时(dst) 1表示时夏令时(dst) 0表示不是
'''
print(time.gmtime()) # UTC时间的结构化时间,比北京时间早8个小时

datetime模块

datetime.datetime.now() 获取系统的本地时间,包含毫秒

datetime.timedelta() 代表两个时间之间的时间差,两个date或datetime对象相减就可以返回一个timedelta对象

import datetime 

print(datetime.datetime.now()) # 2022-01-15 18:20:24.529485 

# 计算当前时间 + 三天后2小时10分钟的时间

print(datetime.datetime.now() + datetime.timedelta(days=3,hours=2,minutes=10)) # 2022-01-18 20:35:47.375147

# 计算当前时间 - 三天前6小时20分钟的时间
print(datetime.datetime.now() + datetime.timedelta(days=-3,hours=6,minutes=20)) # 2022-01-13 00:46:39.611366

# 计算当前时间 + 一周后的时间 
print(datetime.datetime.now() + datetime.timedelta(weeks=1)) # 2022-01-22 18:28:09.128056

本文作者: x1ong
免责声明:本博客所有文章仅用于学习交流
转载声明:文章为作者原创文章 转载请注明来源
本文链接: https://www.giaoblog.com/python/24002.html
上一篇