【问题标题】:Python script: convert random date formats to fixed yyyy-mm-ddPython 脚本:将随机日期格式转换为固定的 yyyy-mm-dd
【发布时间】:2012-12-09 03:26:22
【问题描述】:

我对 python 很陌生,对它了解不多,但我需要制作一个小脚本,当有人输入任何格式的日期时,它会将其转换为 yyyy-mm-dd 格式。 该脚本应该能够共享输入日期的元素,并识别模式。

这对某些人来说可能很容易和显而易见,但我自己制作一个却是我的头。

提前致谢!

【问题讨论】:

  • 许多日期格式不明确。 9/11 在世界大部分地区意味着 11 月 9 日。
  • 不能以明确的方式进行日期解析。所以你关于“任何格式”的问题只能回答:不可能。
  • 你将如何阅读它们?作为字符串?您的程序应该如何知道解释日期顺序的本地方式是什么?
  • 使用dateutil;它已经解决了任意输入解析问题;它可以配置为以一种或另一种方式解释模棱两可的日期。
  • 看看dateutilsdateutil.parser 有几个选项。对于第二部分(转换为 yyyy-mm-dd)datetime 模块有关于如何实现这一点的文档。

标签: python date converter


【解决方案1】:

这对自己来说是一项艰巨的任务;您可能想看看dateutil,它有一个相当强大的parse() 方法,您可以使用它来尝试解析任意格式的日期字符串。

【讨论】:

  • 请注意,这需要安装一个额外的python模块,对于新手来说不一定是一件容易的事。
  • @GreenMatt 一些不可避免地必须学习的东西 - 当然,学习曲线比重新发明轮子要少......
【解决方案2】:

您可以使用strftime 进行输出(您的格式是"%Y-%M-%d")。

对于解析输入,有一个相应的函数 - strptime。但是您将无法处理“任何格式”。你必须首先知道你得到了什么。否则,您将无法区分(例如)美国日期和其他日期。例如,01.02.03 是什么意思?这可能是:

  • yy.mm.dd
  • dd.mm.yy
  • mm.dd.yy

【讨论】:

    【解决方案3】:

    你可以做这样的事情(未测试)

    import locale
    import datetime
    ...
    parsedDate = datetime.strptime(your_string, locale.D_FMT)
    print datetime.strftime(parsedDate, "%Y-%M-%d")
    

    这假定用户将使用自己的本地日期约定。

    【讨论】:

      猜你喜欢
      • 2017-06-24
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多