python-日期和时间
日期和时间
Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能。
Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。
时间间隔是以秒为单位的浮点小数。
每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。
Python 的time 模块下有很多函数可以转换常见日期格式。如函数time.time()用于获取当前时间戳
datetime 模块,日期计算函数
# This allows multiple outputs from a single jupyter notebook cell:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
import warnings
warnings.filterwarnings('ignore')
# 导入模块
import time
import datetime
import calendar # 日历
获取时间 time模块
print("当前时间戳为:", time.time(),'\n')
print('本地时间:',time.localtime(),'\n')
print("本地时间:", time.localtime(time.time()),'\n') # struct_time,9组数字的时间元组
print('格式化时间:', time.asctime( time.localtime(time.time())),'\n')
print('格式化日期:', time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),'\n')
# print("返回当前cpu的时间:",time.clock(),'\n') # python3.8中将删除 use time.perf_counter or time.process_time instead
print("返回当前cpu时间:",time.process_time(),'\n') # 用来衡量不同程序的耗时
print("距离格林威治时间时区差,单位秒", time.timezone,'\n') # 美洲>0,<=0大部分欧洲,亚洲,非洲
日期格式化符号
符号 | 含义 | 符号 | 含义 |
---|---|---|---|
%y | 两位数的年份表示(00-99) | %a | 本地简化星期名称 |
%Y | 四位数的年份表示(000-9999) | %A | 本地完整星期名称 |
%m | 月份(01-12) | %b | 本地简化的月份名称 |
%d | 月内中的一天(0-31) | %B | 本地完整的月份名称 |
%H | 24小时制小时数(0-23) | %c | 本地相应的日期表示和时间表示 |
%I | 12小时制小时数(01-12) | %j | 年内的一天(001-366) |
%M | 分钟数(00-59) | %p | 本地A.M.或P.M.的等价符 |
%S | 秒(00-59) | %U | 一年中的星期数(00-53)星期天为星期的开始 |
%w | 星期(0-6),星期天为星期的开始 | %W | 一年中的星期数(00-53)星期一为星期的开始 |
%x | 本地相应的日期表示 | %X | 本地相应的时间表示 |
%Z | 当前时区的名称 | %% | %号本身 |
获取某月日历 calendar模块
import calendar
print(calendar.calendar(2021,w=2,l=1,c=6)) # 返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。 每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数。|
print("打印2021年01月的日历:", '\n',calendar.month(2021,1))
print("是否闰年:", calendar.isleap(2021),'\n') # 判断是否闰年
print("%d 和 %d 之间的闰年总数是:%d" % (2000,2021,calendar.leapdays(2000,2021)), '\n') # 两个年份间的闰年个数
print("设置每周的起始星期:",calendar.setfirstweekday(1),'\n')
print("返回当前设置的每周第一天的起始星期:",calendar.firstweekday( )) # 返回当前每周起始日期的设置。默认情况下,首次载入 calendar 模块时返回 0,即星期一
计算时间差函数
import pandas as pd
from datetime import datetime
def timeseconds(x,y):
# x = datetime.strptime(x, '%Y-%m-%d %H:%M:%S')
# y = datetime.strptime(y, '%Y-%m-%d %H:%M:%S')
delta = x - y
result = delta/pd.Timedelta(seconds=1)
# result = result.seconds
return result
x = '2021-03-30 10:38:08'
y = '2021-03-30 10:28:58'
x = datetime.strptime(x,'%Y-%m-%d %H:%M:%S')
y = datetime.strptime(y,'%Y-%m-%d %H:%M:%S')
type(x)
type(y)
timeseconds(x,y)