如何从ISO8601日期时间格式中获取小时分钟秒?

2024-06-09 22:11:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Pandas中的Excel文件,我试图处理 日期列,其中日期以ISO 8601格式列出。我想把这个列存储在两个不同的日期和时间中列。的这两列中的值需要存储在Eastern Daylight Savings中。这就是他们应该看起来的样子

Date                    Date (New)  Time (New)
1999-01-01T00:00:29.75  12/31/1998  6:59:58 PM
1999-01-01T00:00:30.00  12/31/1998  6:59:59 PM
1999-01-01T00:00:32.25  12/31/1998  7:00:00 PM
1999-01-01T00:00:30.50  12/31/1998  6:59:58 PM

我已经部分地实现了这一点。 我已将值转换为东方夏令时,并成功地正确存储了日期值。但是,我希望时间值以12小时格式存储,而不是像现在这样以24小时格式存储?在

这就是目前为止我的输出结果。在

^{pr2}$

有人知道我能做些什么吗?在

from pytz import timezone

import dateutil.parser

from pytz import UTC

import datetime as dt

df3['Day']=pd.to_datetime(df['Date'], format='%Y-%m-%d %H:%M:    %S.%f',errors='coerce').dt.tz_localize('UTC')

df3['Day']= df3['Day'].dt.tz_convert('US/Eastern')
df3['Date(New)'], df3['Time(New)'] = zip(*[(d.date(), d.time()) for d in  df3['Day']])

Tags: fromimportnewdatetime格式时间dt
3条回答

看起来你很亲近。%H是24小时制。你应该改用%I。在

How can I account for period (AM/PM) with datetime.strptime?

您可以设置用于输出的时间格式-时间值本身存储为datetime.time()-如果需要特定的字符串表示形式,则可以使用所需格式创建字符串类型列:

from pytz import timezone 
import pandas as pd
import datetime as dt

df= pd.DataFrame([{"Date":dt.datetime.now()}]) 

df['Day']=pd.to_datetime( df['Date'], format='%Y-%m-%d %H:%M:    %S.%f',
                          errors='coerce').dt.tz_localize('UTC')

df['Day']= df['Day'].dt.tz_convert('US/Eastern')
df['Date(New)'], df['Time(New)'] = zip(*[(d.date(), d.time()) for d in  df['Day']]) 

# create strings with specific formatting
df['Date(asstring)'] = df['Day'].dt.strftime("%Y-%m-%d")
df['Time(asstring)'] = df["Day"].dt.strftime("%I:%M:%S %p") 

# show resulting column / cell types
print(df.dtypes)
print(df.applymap(type))
# show df
print(df)

输出:

^{pr2}$

您应该使用d.time().strftime("%I:%M:%S %p"),它将根据请求格式化日期。在

strftime() and strptime() Behavior

相关问题 更多 >