【问题标题】:Python to convert date format from 2/3/13 to 2013-02-03?Python 将日期格式从 2/3/13 转换为 2013-02-03?
【发布时间】:2018-05-12 11:47:04
【问题描述】:

我正在尝试将我的日期字符串转换为 ISO 格式,但它不起作用。关于使用datetimetimepandas 有效执行此操作的任何建议?

date = "2/3/13"
import datetime
t = datetime.date(*map(int,date.split("/")))
format = "'%Y-%m-%d'"
t.strftime(format)
# "'0002-03-13'"

【问题讨论】:

标签: python pandas date datetime time


【解决方案1】:

在处理日期/时间方面,我喜欢一些库。 dateparserparsedatetimearrow都是不错的选择

import dateparser as dp

print(dp.parse("2/13/13"))
2013-02-13 00:00:00

print(dp.parse("2/13/13").date())
2013-02-13

print(dp.parse("Yesterday at 2am PST"))
2017-11-27 13:56:59.290385-08:00

干杯

【讨论】:

    【解决方案2】:

    与熊猫 -

    pd.to_datetime("2/3/13")
    Timestamp('2013-02-03 00:00:00')
    

    使用pandas,您可以(大部分时间)推断格式,而无需手动指定。但是,导入如此繁重的模块仅用于简单的日期时间转换似乎毫无意义。

    出于这个原因,这里有一个同样简单的 python 方式,使用strptime -

    from datetime import datetime as dt
    
    dt.strptime("2/3/13", '%d/%m/%y')
    datetime.datetime(2013, 3, 2, 0, 0)
    

    或者,甚至更简单(您不必传递格式字符串),使用dateutil -

    from dateutil import parser
    
    parser.parse('2/3/13/').date()
    datetime.date(2013, 2, 3)
    

    pandas 实际上使用了 dateutil 库 (– unutbu)。如果您的日期字符串在结构上是一致的,我建议使用其中之一。

    【讨论】:

    • 谢谢!有没有办法不包括时间戳?我可以这样做:str(x).split(" ")[0] 但我不确定是否有理由这样做
    • @BradSolomon 哈哈我问了一个类似的问题,答案可能会有所帮助:stackoverflow.com/questions/46842793/…
    • @BradSolomon:熊猫使用dateutil
    • @O.rka dt.strptime("2/3/13", '%d/%m/%y').date()
    • @O.rka 我不相信如果你使用 pandas,你可以省略时间戳。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 2013-04-05
    • 2011-04-06
    • 2015-04-05
    • 1970-01-01
    相关资源
    最近更新 更多