内外网网站栏目建设方案,网站建设数据库多少钱,网站建设 英文,换网站了吗文章目录一、time 模块1、时间格式转换图2. struct_time 元组元素结构3. format time 结构化表示二、datetime 模块1. date类2. 方法和属性3. datetime 类三、timedelta 类的时间加减四、时间处理基础Python 中提供了对时间日期的多种多样的处理方式#xff0c;主要是在 time …
文章目录一、time 模块1、时间格式转换图2. struct_time 元组元素结构3. format time 结构化表示二、datetime 模块1. date类2. 方法和属性3. datetime 类三、timedelta 类的时间加减四、时间处理基础Python 中提供了对时间日期的多种多样的处理方式主要是在 time 和 datetime 这两个模块里。
一、time 模块
time 模块不牵扯时区的问题便于计算。1 timestamp 时间戳时间戳表示的是从 1970 年 1 月 1 日 00:00:00 开始按秒计算的偏移量。2 struct_time 时间元组共有九个元素组。3 format time 格式化时间已格式化的结构使时间更具可读性。包括自定义格式和固定格式。
1、时间格式转换图 主要 time 生成方法和 time 格式转换方法实例如下首先我们导入 time 模块便于我们后续的操作。
import time然后我们生成 timestamp 他是一个浮点型数据。
time.time()
#1676978808.2162082将其转化为整型数据。
int(time.time())
#1676978809 我们可以知道一个程序消耗的时间通过设置程序开始时间和程序结束时间中间执行一个循环语句这里以累加到 10000 为例。
start_time time.time()
s
for i in range(10000):
s str(i)
end_time time.time()
print(程序消耗时间,end_time-start_time)
#程序消耗时间 0.0039615631103515625 我们也可以通过 time 模块调用本地时间通过生成 struct_time 完成。
my_time time.localtime()
print(my_time)
print(my_time.tm_year)
print(my_time.tm_mon)
print(my_time.tm_mday)
#time.struct_time(tm_year2023, tm_mon2, tm_mday21, tm_hour19, tm_min26, tm_sec58, #tm_wday1, tm_yday52, tm_isdst0)
#2023
#2
#21 我们可以将 timsstamp 转化为 struct_time。
time.localtime(1650177058)
#time.struct_time(tm_year2022, tm_mon4, tm_mday17, tm_hour14, tm_min30, tm_sec58, #tm_wday6, tm_yday107, tm_isdst0) 可以将格式化字符串输入到 struct_time。
time.strptime(2011-05-05 16:37:06, %Y-%m-%d %X)
#time.struct_time(tm_year2011, tm_mon5, tm_mday5, tm_hour16, tm_min37, tm_sec6, #tm_wday3, tm_yday125, tm_isdst-1) 我们也可以将格式化字符串时间反向转变为秒钟数。
time.mktime(time.strptime(2011-05-05 16:37:06, %Y-%m-%d %X))
#1304584626.0 我们可以生成 format_time产生满足我们格式要求的时间。示例 1
#struct_time to format_time time.strftime(%Y-%m-%d %X)
time.strftime(%Y-%m-%d %X,time.localtime())
#time.strftime(%Y-%m-%d %X,time.localtime())
#2023-02-21 19:27:05 #生成format_time 示例 2
#struct_time to format_time
time.strftime(%Y-%m-%d)
#time.strftime(%Y-%m-%d %X,time.localtime())
#2023-02-21示例 3
#struct_time to format_time
time.strftime(%m-%d-%Y)
#time.strftime(%Y-%m-%d %X,time.localtime())
#02-21-20232. struct_time 元组元素结构
其具体元素结构可见下述表格。
属性值tm_year年xxxx 年比如 2011tm_mon月1 - 12tm_mday日1 - 31tm_hour时0 - 23tm_min分0 - 59tm_sec秒0 - 61tm_wdayweekday0 - 60表示周日tm_yday一年中的第几天1 - 366tm_isdst是否是夏令时默认为-1
其具体如下作用1 取得时间戳/时间格式的字符串中对应的年/月/日等信息。2 作为时间戳和字符串时间之间的桥梁。具体可见如下示例
time_stuct time.strptime(2011-05-07 16:37:06, %Y-%m-%d %X)
print(time_stuct.tm_year)
print(time_stuct.tm_mon)
print(time_stuct.tm_mday)
print(time_stuct.tm_hour)
print(time_stuct.tm_min)
my aaa
%s% my
my_int 1
%d% my_int
我们在{}工作.format(家里)
addr 家里
f我们在{addr}工作
#2011
#5
#7
#16
#37
#我们在家里工作3. format time 结构化表示
其具体含义可见下述表格。
属性含义%Y -年[0001…20182019…9999]%m -月[0102…1112]%d -天[0102…3031]%M -分钟[0001…5859]%S -秒[0001…5861]%X本地相应时间%y去掉世纪的年份00 - 99
常见的结构化时间组合有如下几种示例 1
time.strftime(%Y-%m-%d %X)
#2023-02-21 20:55:40示例 2
time.strftime(%Y-%m-%d)
#2023-02-21示例 3
time.strftime(%m)
#02我们可以通过 time 运算获取我们想要的时间点并按 %Y-%m-%d %X 的形式表达出来。
import time
t1 time.time()
t2t124*60*60
time.strftime(%Y-%m-%d %X,time.localtime(t2))
#2023-02-22 21:02:38或者通过 time 进行暂停操作例如火箭发射我们在循环结束后暂停 1s然后进行下一个语句。
# 倒计时
for i in range(5):print(\r, %s 秒 % (5-i), end)# 暂停1s后运行 time.sleep(1)
print(\r,发射!!!!)
#发射!!!!二、datetime 模块
datatime 模块重新封装了time模块提供更多接口提供的类有datetimedatetime、timedeltatzinfo 等。
1. date类
其语法模板如下
datetime.date(year, month, day)有静态方法和字段两种方法。date.today()返回一个表示当前本地日期的date对象。date.fromtimestamp(timestamp)根据给定的时间戮返回一个date对象。具体可见如下示例示例 1
from datetime import date
import time
print(date.today():, date.today())
print(date.fromtimestamp():, date.fromtimestamp(time.time()))
#date.today(): 2023-02-21
#date.fromtimestamp(): 2023-02-21示例 2
from datetime import date
print(type(date.fromtimestamp(1650177058)))
print(date.fromtimestamp(1650177058))
#class datetime.date
#2022-04-172. 方法和属性
可以通过 d1 date(2011,06,03) 生成 date 对象 。其具体含义可见下述表格。
属性含义d1.year年d1.month月d.day日d1.replace(year, month, day)生成一个新的日期对象用参数指定的年月日代替原有对象中的属性。原有对象仍保持不变d1.timetuple()返回日期对应的time.struct_time对象d1.weekday()返回weekday如果是星期一返回0如果是星期2返回1以此类推d1.isoweekday()返回weekday如果是星期一返回1如果是星期2返回2以此类推d1.isoformat()返回格式如’YYYY-MM-DD’的字符串d1.strftime(fmt)和 time 模块 forma t相同
具体可见如下示例示例 1我们将 day 参数指定为 1。
now date.today()
now
print(now.replace(day1))
#2023-02-01示例 2同示例 1但是换了一种函数写法。
date.today().replace(day1)
#datetime.date(2023, 2, 1)示例 3直接使用 now 函数生成当前日期。
now
#datetime.date(2023, 2, 21)示例 4直接使用 now.isoformat() 函数生成 YYYY-MM-DD 格式的当前日期。
now.isoformat()
#2023-02-21示例 5直接使用 now.isoweekday() 函数生成周几返回对应的数字。
now.isoweekday()
#2 示例 6使用 now.strftime() 函数自定义输出格式。
#2022.04.18 自定义输出格式
now.strftime(%Y.%m.%d)
#2023.02.21示例 7
now date(2021, 10, 26)
print(now.year,now.month,now.day)
tomorrow now.replace(day 1)
print(now:, now, , 当月第一天:, tomorrow)
print(timetuple():, now.timetuple())
print(weekday():, now.weekday())
print(isoweekday():, now.isoweekday())
print(isoformat():, now.isoformat())
print(strftime():, now.strftime(%Y.%m.%d))
#2021 10 26
#now: 2021-10-26 , 当月第一天: 2021-10-01
#timetuple(): time.struct_time(tm_year2021, tm_mon10, tm_mday26, tm_hour0, tm_min0, tm_sec0, tm_wday1, tm_yday299, tm_isdst-1)
#weekday(): 1
#isoweekday(): 2
#isoformat(): 2021-10-26
#strftime(): 2021.10.263. datetime 类
datetime 相当于 date 和 time 结合起来。其语法模板如下
datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )datetime.today()返回一个表示当前本地时间的 datetime 对象。datetime.now([tz])返回一个表示当前本地时间的 datetime 对象如果提供了参数 tz则获取 tz 参数所指时区的本地时间。datetime.fromtimestamp(timestamp[, tz])根据时间戮创建一个 datetime 对象参数 tz 指定时区信息。datetime.strptime(date_string, format)将格式字符串转换为 datetime 对象。我们可以将 datetime 转化为指定格式的字符串。
from datetime import datetime
now datetime.now()
print(type(now))
print(now.strftime(%Y-%m-%d %X))
print(now.strftime(%Y-%m-%d %H:%M))
#class datetime.datetime
#2023-02-21 21:45:25
#2023-02-21 21:45对于 2021-11-25 10:23 这类的字符串我们可以使用 strptime 将其转化为 datetime。需要注意的是将字符串转化为 datetime 数据类型格式需要统一。
my_str 2021-11-10 10:23
print(datetime.strptime(my_str,%Y-%m-%d %H:%M))
my_str 10/11/2021 10:23
datetime.strptime(my_str,%d/%m/%Y %H:%M)
#2021-11-10 10:23:00
#datetime.datetime(2021, 11, 10, 10, 23)汇总一下见下方例子。
from datetime import *
import time
now datetime.now()
print(today():, datetime.today())
print(now():, datetime.now())
print(fromtimestamp(tmstmp):, datetime.fromtimestamp(time.time()))
print(datetime.strptime(date_string, format):,datetime.strptime(2022-03-21, %Y-%m-%d))
#today(): 2023-02-21 21:45:28.141748
#now(): 2023-02-21 21:45:28.141748
#fromtimestamp(tmstmp): 2023-02-21 21:45:28.141748
#datetime.strptime(date_string, format): 2022-03-21 00:00:00三、timedelta 类的时间加减
使用 timedelta 可以很方便的在日期上做天 days小时 hour分钟 minute秒 second毫秒 millisecond微秒 microsecond 的时间计算如果要计算月份则需要另外的办法。具体可见如下示例。示例 1加上 -1 和减 1 是相同的
from datetime import datetime
from datetime import timedelta
dt datetime.now()
#日期减一天
dt_1 dt timedelta(days-1) #昨天
dt_11 dt - timedelta(days1) #昨天
dt3 dt timedelta(days1) #明天
print(dt3:,dt_1)
print(dt_11:,dt_11)
print(dt3:,dt3)
#dt3: 2023-02-20 22:11:28.388926
#dt_11: 2023-02-20 22:11:28.388926
#dt3: 2023-02-22 22:11:28.388926示例 2可以使用 s.total_seconds 返回在该时间实例的给定持续时间内覆盖的总秒数
# 明天的datetime - 昨天的datetime
s dt3 - dt_1
print(s.days)
print(s.total_seconds())
#2
#172800.0示例 3
delta_obj dt3-dt
print(type(delta_obj),delta_obj)#type datetime.timedelta 1 day, 0:00:00
# total_seconds():返回在该时间实例的给定持续时间内覆盖的总秒数
print(delta_obj.days ,delta_obj.total_seconds())#1 86400.0
#class datetime.timedelta 1 day, 0:00:00
#1 86400.0四、时间处理基础
Pandas 提供了四种类型的生成日期时间的对象日期时间、时间增量、时间跨度、日期偏移量。1 日期时间Date Times具有时区支持的特定日期和时间。与 Python 标准库中的 datetime.datetime 类似。如 2020 年 12 月 6 日 13 点 37 分 50 秒.2 时间增量Time Deltas绝对持续时间用于在指定时间点基础上增加指定的增量如在某年月日的基础上增加 2 天、增加 2 个月、减少 4 小时等最后产生一个新的时间点。3 时间跨度Time Span由时间点及其相关周期定义的时间跨度如连续产生一年四个季度的时间序列。4 日期偏移Date Offsets以日历计算的相对持续时间表示时间间隔两个时间点之间的长度如日、周、月、季度、年。
概念标量类数组类Pandas 数据类型主要建立方法日期时间Date TimesTimesstamp 时间戳DatetimeIndex 时间索引datetime64[ns]、datetime64[ns,tz]to datetime()、date_range()时间增量Time DeltasTimedelta 时间增量Timedeltalndex 时间增量索引timedelta[ns]to timedelta()、timedelta range()时间跨度Time SpanPeriod 时间周期PeriodIndex 周期索引period[freq]Period()、period_range()日期偏移Date OffsetsDateOffsetNoneNoneDateOffset()
一般情况下时间序列主要是 Series 或 DataFrame 的时间型索引可以用时间元素进行操控。