Python datetime 时间的格式转换及运算

1. 转换格式

import datetime
today = '2021-07-19'
print('Original string'+ ': ' , today , type(today))
#转变为时间格式
today1 = datetime.datetime.strptime(today,'%Y-%m-%d')
print('Change to datetime'+ ': ',today1,type(today1))
#转变为字符串
today2 = datetime.datetime.strftime(today1,'%Y-%m-%d')
print('Change to datetime'+ ': ',today2,type(today2))
Original string:  2021-07-19 <class 'str'>
Change to datetime:  2021-07-19 00:00:00 <class 'datetime.datetime'>
Change to datetime:  2021-07-19 <class 'str'>

2. 日期运算

import pandas as pd
import datetime
# 模拟数据
df = pd.DataFrame(columns = ['Date1','Date2'],index = range(0,4))
today  = '2021-07-19'
for i in range(0,4):
    df.loc[i,'Date1'] = datetime.datetime.strptime(today,'%Y-%m-%d')+datetime.timedelta(days = i)
    df.loc[i,'Date2'] = datetime.datetime.strptime(today,'%Y-%m-%d')+datetime.timedelta(days = i+3)
#计算日期相差天数
for i in range(0,df.shape[0]):
    df.loc[i,'Days'] = (df.iloc[0,1]-df.iloc[0,0]).days
df

3. 特殊格式

2021-04-0800:00:00.0,2020/12/9,2020-12-9

import pandas as pd
import datetime
import re
df['起保时间'] = df['起保时间'].astype('str')
for i in range(0,df.shape[0]):
  if ':' in df.loc[i,'起保时间']:
    df.loc[i,'起保时间'] = re.search(r"(\d{4}-\d{1,2}-\d{1,2})",df.loc[i,'起保时间']).group(0)
  if '-' in df.loc[i,'起保时间']:
    df.loc[i,'起保时间'] = df.loc[i,'起保时间'].replace('-','/')
def func(df):
    df['起保时间'] = datetime.datetime.strptime(df['起保时间'],'%Y/%m/%d')
    return df
df = df.apply(func, axis = 1)
df['起保时间'] 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中,我们可以使用time模块和datetime模块来进行时间转换。 要将时间转换时间元组,我们可以使用time模块的localtime()函数。例如,如果我们想获取当前时间时间元组,可以使用以下代码: ``` import time t = time.localtime() ``` 这将返回一个表示当前时间时间元组。 要将时间元组转换时间戳,我们可以使用time模块的mktime()函数。例如,如果我们有一个时间元组t,并想将其转换时间戳,可以使用以下代码: ``` timestamp = time.mktime(t) ``` 这将返回一个表示时间元组对应的时间戳。 另外,我们还可以使用time模块的time()函数来获取当前时间时间戳。例如: ``` ts = time.time() ``` 这将返回当前时间时间戳。 要将时间转换时间元组,我们可以使用time模块的localtime()函数或gmtime()函数。例如,如果我们有一个时间戳ts,并想将其转换时间元组,可以使用以下代码: ``` # 方法一 time_tuple1 = time.localtime(ts) # 方法二 time_tuple2 = time.gmtime(ts) ``` 方法一返回的时间元组是基于本地时区的,方法二返回的时间元组是基于GMT(格林尼治标准时间)的。这两种方法的区别仅仅在于小时的输出不同,方法一的小时是24小时制的,方法二是12小时制的。 另外,如果我们想进行时间的加减运算时间元组是不能直接进行加减操作的。我们需要使用datetime模块来进行时间的加减运算。 首先,我们可以使用datetime模块的strptime()函数将字符串转换datetime格式的时间。例如,如果我们有一个字符串start表示开始时间,有一个字符串end表示结束时间,我们可以使用以下代码将其转换datetime格式的时间: ``` import datetime start = '2019-07-28 00:00:08' end = '2019-07-29 00:50:03' a = datetime.datetime.strptime(start, "%Y-%m-%d %H:%M:%S") b = datetime.datetime.strptime(end, "%Y-%m-%d %H:%M:%S") ``` 这将返回表示开始时间和结束时间datetime对象。 要计算两个时间之间的时间差,我们可以直接使用加减操作。例如,如果我们想计算两个时间之间的秒数差,可以使用以下代码: ``` seconds_diff = (b - a).seconds ``` 这将返回表示两个时间之间的秒数差。 如果我们想获得准确的时间差并将其转换为秒数,可以使用total_seconds()函数。例如: ``` total_seconds_diff = (b - a).total_seconds() ``` 这将返回表示两个时间之间的准确时间差,并将其转换为秒数。 另外,我们还可以使用datetime模块的timedelta()函数进行时间的加减运算。例如,如果我们有一个datetime对象a,并想在此基础上加上5小时零68秒,可以使用以下代码: ``` c = a + datetime.timedelta(hours=5, seconds=68) ``` 这将返回一个新的datetime对象c,表示a加上5小时零68秒后的时间。 同样地,我们也可以使用timedelta()函数进行时间的减法运算。例如,如果我们有一个datetime对象a,并想在此基础上减去69天和89分钟,可以使用以下代码: ``` d = a - datetime.timedelta(days=69, minutes=89) ``` 这将返回一个新的datetime对象d,表示a减去69天和89分钟后的时间。 总结来说,要在Python中进行时间转换,我们可以使用time模块和datetime模块。time模块适用于时间元组和时间戳之间的转换,而datetime模块适用于字符串和datetime对象之间的转换以及时间的加减运算。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python中三种时间格式转换的方法](https://blog.csdn.net/qdPython/article/details/127937547)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python机器学习案例-时间序列分析5](https://download.csdn.net/download/woshiyuyanjia/88269080)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远胥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值