大家好,欢迎来到IT知识分享网。
Python字符串和日期时间格式转换
前言:
- 字符串转日期:
datetime.datetime.strptime(date_string, format),两个参数必要参数
示例1:datetime.datetime.strptime('', '%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 = '' 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'>
1.1格式YYYYMM变成YYYYMMDD
这是字符串和字符串直接的转换
import datetime v_part = '' # 格式YYYYMM变成YYYYMMDD v_date = v_part + '01' print(type(v_date)) print(v_date)
返回结果
<class 'str'>
1.2字符串转换为时间格式
字符串转换为时间格式,使用 datetime.datetime.strptime(date_string, format),两个参数:字符串和日期格式
import datetime v_part = '' # 格式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 = '' # 格式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 = '' # 格式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)
声明:本文所载信息不保证准确性和完整性。文中所述内容和意见仅供参考,不构成实际商业建议,可收藏可转发但请勿转载,如有雷同纯属巧合。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/110761.html