【发布时间】:2015-12-01 12:25:29
【问题描述】:
我目前正在获取 ISO 格式,但我不确定如何获取 ISO (8601) 格式。
当我将以下日期 08/10/2015 11:05:14 PM 转换为 ISO 格式时,我得到 2015-08-10T11:05:14+0000
理想情况下我应该得到 2015-08-10T23:05:14+0000
将日期编辑为 iso 格式的行是:
new[3] = datetime.strptime(new[3], "%m/%d/%Y %H:%M:%S %p").isoformat() + '+0000'
代码:
from tempfile import NamedTemporaryFile
from datetime import datetime
from shutil import move
from operator import itemgetter
import csv
from pathlib import Path
def change_file(in_file, cols):
with open(in_file) as f, NamedTemporaryFile("w", dir=".", delete=False) as tmp:
r = csv.reader(f)
wr = csv.writer(tmp)
count = 0
for row in r:
if count == 0:
new = []
for x in itemgetter(*cols)(row):
new.append(x.lstrip())
wr.writerow(new)
count += 1
continue
if row != '\n':
new = []
print(row)
for x in itemgetter(*cols)(row):
new.append(x.lstrip())
new[3] = datetime.strptime(new[3], "%m/%d/%Y %H:%M:%S %p").isoformat() + '+0000'
print(new)
wr.writerow(new)
move(tmp.name, in_file)
for fle in Path('./BM').glob('**/*/cplt.csv'):
print(fle)
change_file(str(fle), (6, 2, 1, 0, 5))
【问题讨论】:
-
你的模式是
%H:%M:%S %p,%H你不需要%p。 -
@hjpotter92 - 我认为 %p 解决了日期时间的 AM/PM 部分,对吗?
-
是的,但是
%Hrepresents 24 小时制。 AM/PM 对于这种格式是多余的。 -
详细阅读您的问题,尝试使用
%I而不是%H。
标签: python csv datetime iso8601