Python 日期和时间

本文介绍Python中处理日期和时间的模块(time、datetime),包括时间戳、格式化字符串、时间元组三种表示方式,常用格式化符号,以及时间转换操作:获取当前时间、字符串与时间戳互转、格式切换、计算7天前时间、datetime模块使用等。

作者:zhuge···预计阅读 18 分钟·646 阅读·0 评论
Python 日期和时间

    在代码中,我们常常需要与时间打交道。在Python中,与时间处理有关的模块包括time、datetime以及calendar。在Python中,通常用时间戳、格式化的时间字符串和元组3种方式表示时间。

    时间戳(timestamp)表示从1970年1月1日00时00分00秒开始按秒计算的偏移量,也就是从1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起到现在的总毫秒数。

Python格式化符号

%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12) 
%j 年内的一天(001-366)
%m 月份(01-12)
%M 分钟数(00=59)
%p 本地A.M.或P.M.
%S 秒(00-59)
%U 一年中的星期数(00-53)星期天为星期的开始,第一个星期天之前的所有天数都放在第0周
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%Z 当前时区的名称
%% %号本身

1:%p只有与%I配合使用才有效果。

2:文档中强调确实是0~61,而不是59,闰年秒占两秒。

3:当使用strptime()函数时,只有这一年的周数和天数确定时%U和%w才会被计算。

Python的时间元组

tm_sec; #秒,正常范围0-61, 61闰年
tm_min; #分钟,0-59
tm_hour; #小时, 0-23
tm_mday; #日,即一个月中的第几天,1-31
tm_mon; #月, 从一月算起,0-11
tm_year; #年, 从1900至今已经多少年
tm_wday; #星期,一周中的第几天, 从星期日算起,0-6
tm_yday; #从今年1月1日到目前的天数,范围0-366
tm_isdst; #日光节约时间的旗标

获取当前日期

print(time.time())
#1650639413.644767
#获取元组形式的时间戳
print(time.localtime())
print(time.gmtime())
print(time.localtime(time.time()))
#time.struct_time(tm_year=2022, tm_mon=4, tm_mday=22, tm_hour=22, tm_min=56, 
#tm_sec=53, tm_wday=4, tm_yday=112, tm_isdst=0)
#格式化日期的函数(基于元组的形式进行格式化):
print(time.strftime('%Y-%m-%d',time.localtime(time.time())))
#2022-04-22

mktime

t=(2022,4,22,22,8,43,0,0,0)
x=time.mktime(t)
print(x)
1650636523

将字符串日期转换为时间数组

t = "2022-04-22 22:08:43"
timeStruct = time.strptime(t, "%Y-%m-%d %H:%M:%S")
print(timeStruct)
#time.struct_time(tm_year=2022, tm_mon=4, tm_mday=22, tm_hour=22, tm_min=8, 
tm_sec=43, tm_wday=4, tm_yday=112, tm_isdst=-1)

将字符串的时间转换为时间戳

import time
t = "2022-04-22 22:08:43"
#将其转换为时间数组
timeStruct = time.strptime(t, "%Y-%m-%d %H:%M:%S")
#转为时间戳:
timeStamp = int(time.mktime(timeStruct))
print(timeStamp)
#1650636523

时间戳转换为指定格式日期

timeStamp = 1650636523
localTime = time.localtime(timeStamp)
strTime = time.strftime("%Y-%m-%d %H:%M:%S", localTime)
print(strTime)
#2022-04-22 22:08:43

格式切换

import time
t = "2022/04/22 22:30:00"
#先转换为时间数组,然后转换为其他格式
timeStruct = time.strptime(t, "%Y/%m/%d %H:%M:%S")
strTime = time.strftime("%Y-%m-%d %H:%M:%S", timeStruct)
print(strTime)
#2022-04-22 22:30:00

获取当前时间并转换为指定日期格式

import time
#获得当前时间时间戳
now = int(time.time())
#转换为其他日期格式,如:"%Y-%m-%d %H:%M:%S"
timeStruct = time.localtime(now)
strTime = time.strftime("%Y-%m-%d %H:%M:%S", timeStruct)
print(strTime)
#2022-04-22 22:26:30

获得7天前的时间的方法

import time
import datetime
#先获得时间数组格式的日期 计算 之后的就是 + 
_7DayAgo = (datetime.datetime.now() - datetime.timedelta(days = 7))
#timedelta()的参数有:days,hours,seconds,microseconds
#转换为时间戳:
timeStamp = int(time.mktime(_7DayAgo.timetuple()))
#转换为其他字符串格式:
strTime = _7DayAgo.strftime("%Y-%m-%d %H:%M:%S")
print(strTime)
#2022-04-15 22:28:11

使用datetime模块来获取当前的日期和时间

import datetime
i = datetime.datetime.now()
print("当前的日期和时间是 %s" % i)
#当前的日期和时间是 2022-04-22 22:38:56.929294
print("ISO格式的日期和时间是 %s" % i.isoformat())
#ISO格式的日期和时间是 2022-04-22T22:38:56.929294
print("当前的日期和时间是 {0}年{1}月{2}日{3}时{4}分{5}秒". \
       format(i.year, i.month,i.day,i.hour,i.month,i.second))
#当前的日期和时间是 2022年4月22日22时4分56秒
print("yyyy-mm-dd 格式是  %d-%02d-%02d" % (i.year, i.month, i.day))
#yyyy-mm-dd 格式是  2022-04-22

延迟执行,单位:s

time.sleep([secs])

datetime

import datetime
print(datetime.datetime.today())
#2022-04-23 09:17:48.579397
print(datetime.datetime.now())
#2022-04-23 09:17:48.579448
print(datetime.datetime.utcnow())
#2022-04-23 01:17:48.579456

dt_now = datetime.datetime.strptime('2022-04-22 23:30:04.770690','%Y-%m-%d %H:%M:%S.%f') print(dt_now,type(dt_now)) #2022-04-22 23:30:04.770690 <class 'datetime.datetime'> dt_now= datetime.datetime.now() dt_new = dt_now.strptime('2000-01-01 00:00:0.000000','%Y-%m-%d %H:%M:%S.%f') print(dt_new) #2000-01-01 00:00:00 print(dt_now.strftime('%Y-%m-%d')) #2022-04-23

相关文章

评论

加载中...