python 时间转换 以及加减日期 时间处理多种方式

本文展示了如何使用Python的datetime和time模块进行日期时间的转换,包括字符串转日期时间,日期时间转字符串,计算时间差,时间戳转换以及日期的加减操作。此外,还介绍了日期时间的格式化方法。
摘要由CSDN通过智能技术生成

这里用到了datetime 和time 模块

import datetime
import time


# str转时间格式:
dd = '2019-03-17 11:00:00'
dd = datetime.datetime.strptime(dd, "%Y-%m-%d %H:%M:%S")
print(dd,type(dd))
# 结果为: 2019-03-17 00:00:00 <class 'datetime.datetime'>
# ------------------------------------------------------------------------------------------------------------------------------------------
dd = '20190317'
dd = datetime.datetime.strptime(dd, "%Y%m%d")
print(dd,type(dd))
# 结果为: 2019-03-17 00:00:00 <class 'datetime.datetime'>

# ------------------------------------------------------------------------------------------------------------------------------------------

# 时间格式转str:
dd = datetime.datetime.now() # 2023-02-01 15:15:17.154284
dc = dd.strftime("%Y-%m-%d %H:%M:%S")
print(dc,type(dc))
# 结果为:  2023-02-01 15:15:49 <class 'str'>

dd = datetime.datetime.now() # 2023-02-01 15:15:17.154284
dc = dd.strftime("%Y%m%d")
print(dc,type(dc))
# 结果为: 20230201 <class 'str'>

# ------------------------------------------------------------------------------------------------------------------------------------------

# 求两个字符串时间的差值
dd = '2019-03-17 11:00:00'
cc = '2019-03-16 01:00:00'
dd = datetime.datetime.strptime(dd, "%Y-%m-%d %H:%M:%S")
cc = datetime.datetime.strptime(cc, "%Y-%m-%d %H:%M:%S")
print(dd-cc,type(dd-cc))
# 结果为: 1 day, 10:00:00  <class 'datetime.timedelta'>

dd = '2019-03-17'
cc = '2017-03-16'
dd = datetime.datetime.strptime(dd, "%Y-%m-%d")
cc = datetime.datetime.strptime(cc, "%Y-%m-%d")
print(dd-cc,type(dd-cc),'差值为:{}天'.format(str(dd-cc).split()[0]))
# 结果为: 731 day, 0:00:00 <class 'datetime.timedelta'> 差值为:731天

# ------------------------------------------------------------------------------------------------------------------------------------------

# 时间转时间戳
t_1 = '20210315'

time_1 = time.strptime(t_1, '%Y%m%d') # 使用 time 将它转换为时间格式
timeStamp = int(time.mktime(time_1))
print(time_1,timeStamp)
# 结果为  time.struct_time(tm_year=2021, tm_mon=3, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=74, tm_isdst=-1) 1615737600

# ------------------------------------------------------------------------------------------------------------------------------------------

# 时间戳转时间
timeStamp = 1615737679
time_instance = datetime.datetime.fromtimestamp(timeStamp)
style_time = time_instance .strftime("%Y-%m-%d %H:%M:%S")
print(time_instance,type(time_instance),style_time,type(style_time))
# 结果为: 2021-03-15 00:00:00 <class 'datetime.datetime'> 2021-03-15 00:00:00 <class 'str'>

------------------------------------------------------------------------------------------------------------------------------------------

# 加减日期
# 今天 日期
current_day_instance = datetime.date.today()
# 昨天 日期
last_day_instance = current_day_instance - datetime.timedelta(days=1)    # 前天-1  明天+1
print(current_day_instance,type(current_day_instance),last_day_instance,type(last_day_instance))
# 结果为: 2023-02-01 <class 'datetime.date'> 2023-01-31 <class 'datetime.date'>

------------------------------------------------------------------------------------------------------------------------------------------

# 计算下一个整点的 秒数  当前时间是2023-02-01 15:55
time_aim = str(datetime.datetime.now() + datetime.timedelta(hours=1))[:13]+':00:00'  # 创建 目标时间  下一个小时的整点
target_time = datetime.datetime.strptime(time_aim, '%Y-%m-%d %H:%M:%S')     # 格式转换
delay = (target_time - datetime.datetime.now()).total_seconds()             # 相减 获取 差值的秒数
print(time_aim,type(time_aim),target_time,type(target_time),'还相差{}秒进去下一小时'.format(delay))
# 结果为  2023-02-01 16:00:00 <class 'str'> 2023-02-01 16:00:00 <class 'datetime.datetime'> 还相差222.463207秒进去下一小时

------------------------------------------------------------------------------------------------------------------------------------------

# 格式化时间日期
# %a 星期几的简写
# %A 星期几的全称
# %b 月分的简写
# %B 月份的全称
# %c 标准的日期的时间串
# %C 年份的后两位数字
# %d 十进制表示的每月的第几天
# %D 月/天/年
# %e 在两字符域中,十进制表示的每月的第几天
# %F 年-月-日
# %g 年份的后两位数字,使用基于周的年
# %G 年分,使用基于周的年
# %h 简写的月份名
# %H 24小时制的小时
# %I 12小时制的小时
# %j 十进制表示的每年的第几天
# %m 十进制表示的月份
# %M 十时制表示的分钟数
# %n 新行符
# %p 本地的AM或PM的等价显示
# %r 12小时的时间
# %R 显示小时和分钟:hh:mm
# %S 十进制的秒数
# %t 水平制表符
# %T 显示时分秒:hh:mm:ss
# %u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
# %U 第年的第几周,把星期日做为第一天(值从0到53)
# %V 每年的第几周,使用基于周的年
# %w 十进制表示的星期几(值从0到6,星期天为0)
# %W 每年的第几周,把星期一做为第一天(值从0到53)
# %x 标准的日期串
# %X 标准的时间串
# %y 不带世纪的十进制年份(值从0到99)
# %Y 带世纪部分的十制年份
# %z,%Z 时区名称,如果不能得到时区名称则返回空字符。
# %% 百分号

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值