【问题标题】:Converting date into '%Y-%m-%d' using strptime and strftime using Python使用 Python 使用 strptime 和 strftime 将日期转换为 '%Y-%m-%d'
【发布时间】:2020-12-15 10:10:46
【问题描述】:

我有一个我不熟悉的日期格式的 .csv 文件(我认为通过阅读它是 unix)。

1607299200000,string,int,float
1607385600000,string,int,float
1606953600000,string,int,float

我一直在尝试使用 Python 将其转换为 '%Y-%m-%d' 但不断收到各种错误。我对 Python 相当陌生,但这是我目前所拥有的:

outRow.append(datetime.datetime.strptime(row[0],'%B %d %Y').strftime('%Y-%m-%d'))

任何帮助将不胜感激。

【问题讨论】:

  • 这是一个整数,不是日期时间。很可能是 Unix 时间戳。您必须先将其转换为日期,然后才能生成具有不同格式的新字符串。 BTW 日期没有格式。如果您想使用日期,则无需重新格式化日期
  • 这能回答你的问题吗? Converting unix timestamp string to readable date

标签: python csv datetime


【解决方案1】:
import datetime
timestamp = datetime.datetime.fromtimestamp(1500000000)
print(timestamp.strftime('%Y-%m-%d %H:%M:%S'))

输出:

2017-07-14 08:10:00

【讨论】:

    【解决方案2】:

    这里的棘手部分是你有一个微秒的 unix 时间戳。 AFAIK 没有将 unix ts 与 ms 转换为日期时间的选项。

    所以首先你必须删除它们(除以 1000),然后根据需要添加它们。

    ts = row[0]
    dt = datetime.utcfromtimestamp(ts//1000).replace(microsecond=ts%1000*1000)
    

    然后您可以strftime 转换为您需要的任何格式。

    虽然如果您需要对整个 csv 执行此操作,您最好查看pandas,但这超出了本问题的范围。

    【讨论】:

    • 谢谢你——我没有注意到。
    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2021-02-26
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    相关资源
    最近更新 更多