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)