Python字符串和日期时间格式转换

前言:

  • 字符串转日期:datetime.datetime.strptime(date_string, format),两个参数必要参数

示例1:datetime.datetime.strptime('20230120', '%Y%m%d') 返回 2023-01-20 00:00:00

  • 日期转字符串:Timestamp.strftime("%Y-%m-%d"),Timestamp是原数据格式

示例2:datetime.datetime.now().strftime("%Y-%m-%d") 返回 2024-02-05

示例3:datetime.datetime.today().strftime("%Y-%m-%d") 返回 2024-02-05

  • pandas的DataFrame时间列转字符串:pd.Series.dt.strftime('%Y%m%d'),pd.Series是具体的列

  • pandas的DataFrame字符串列转日期:[datetime.datetime.strptime(i, '%Y%m%d') for i in pd.Series],pd.Series是具体的列

1.字符串和日期时间转换

终论:给定月份的上月月份(YYYYMM)

要求根据输入数据的月份,返回格式为YYYYMM的上月月份,后续内容都是这个内容的逐步实现

import datetime

v_part = '202302'

date_result = (datetime.datetime.strptime(v_part + '01', '%Y%m%d') + datetime.timedelta(days=-1)).strftime("%Y%m")

print(type(date_result))
print(date_result)

返回结果

<class 'str'>
202301

1.1格式YYYYMM变成YYYYMMDD

这是字符串和字符串直接的转换

import datetime

v_part = '202311'

# 格式YYYYMM变成YYYYMMDD
v_date = v_part + '01'

print(type(v_date))
print(v_date)

返回结果

<class 'str'>
20231101

1.2字符串转换为时间格式

字符串转换为时间格式,使用 datetime.datetime.strptime(date_string, format),两个参数:字符串和日期格式

import datetime

v_part = '202311'

# 格式YYYYMM变成YYYYMMDD
v_date = v_part + '01'

# 字符串转换为时间格式
date_yyyymmdd = datetime.datetime.strptime(v_date, '%Y%m%d')

print(type(date_yyyymmdd))
print(date_yyyymmdd)

返回结果

<class 'datetime.datetime'>
2023-11-01 00:00:00

1.3时间格式加减

时间格式加减,通过 datetime.timedelta(days=nums),具体增减时间定为nums值即可,增加一天写1,减去一天写-1,由源码 __slots__ = '_days', '_seconds', '_microseconds', '_hashcode' 可知这里支持的时间类型

import datetime

v_part = '202302'

# 格式YYYYMM变成YYYYMMDD
v_date = v_part + '01'

# 字符串转换为时间格式
date_yyyymmdd = datetime.datetime.strptime(v_date, '%Y%m%d')

# 时间格式加减
date_yesterday = datetime.datetime.strptime(v_date, '%Y%m%d') + datetime.timedelta(days=-1)

print(type(date_yesterday))
print(date_yesterday)

1.4时间格式转换为字符串

时间转换为字符串用 strftime(format) 格式

import datetime

v_part = '202302'

# 格式YYYYMM变成YYYYMMDD
v_date = v_part + '01'

# 字符串转换为时间格式
date_yyyymmdd = datetime.datetime.strptime(v_date, '%Y%m%d')

# 时间格式加减
date_yesterday = datetime.datetime.strptime(v_date, '%Y%m%d') + datetime.timedelta(days=-1)

# 时间格式转换为字符串
date_result = date_yesterday.strftime("%Y-%m-%d")

print(type(date_result))
print(date_result)

返回结果

<class 'str'>
2023-01-31

2.Pandas的DataFrame时间格式转换

时间格式的列可以转换为string、int,同样string、int类型可以转换为时间格式

import datetime
import pandas as pd

# 构建一个带时间格式的 DataFrame
result = pd.DataFrame([[1, datetime.datetime.now()],
                       [2, datetime.datetime.today() + datetime.timedelta(days=-1)],
                       [3, datetime.datetime.today() + datetime.timedelta(days=1)],
                       [4, datetime.datetime.today() + datetime.timedelta(days=-381)]
                       ],
                      columns=['编号', '日期时间'])

# 根据时间格式的列,生成一个 int 类型 YYYYMMDD 格式的列
result['日期'] = result['日期时间'].dt.strftime('%Y%m%d').astype(int)

# 根据 int 类型 YYYYMMDD 格式的列,生成一个 日期格式 的列。列表生成式或lambda表达式都行
result['日期格式'] = [datetime.datetime.strptime(i, '%Y%m%d') for i in result['日期'].astype(str)]
print(result)
print(result.dtypes)

返回结果
在这里插入图片描述


声明:本文所载信息不保证准确性和完整性。文中所述内容和意见仅供参考,不构成实际商业建议,可收藏可转发但请勿转载,如有雷同纯属巧合。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值