代码之家  ›  专栏  ›  技术社区  ›  Tarun Maganti

如何在python 3.7+中使用argparse传递日期?

  •  1
  • Tarun Maganti  · 技术社区  · 7 年前
    parser.add_argument("-s", "--start-date", dest="start_date", 
                        default=date.today() - timedelta(days = 1), 
                        type=date, help="Date in the format yyyymmdd")
    

    这个方法给出了错误

    argument_test.py: error: argument -s/--start-date: invalid date value: 20181215
    

    我假设接收到的参数是一个字符串,并且它是不兼容的,因为对象预期的是日期。那么,我该如何传递日期对象呢?有工作吗?

    我可以解析一个字符串并将其传递给一个日期对象。但是,我想探索其他的直接选择。

    1 回复  |  直到 7 年前
        1
  •  2
  •   blhsing    7 年前

    可以使用包装函数 datetime.strptime 要使用所需格式分析给定的日期字符串:

    parser.add_argument("-s", "--start-date", dest="start_date", 
                        default=date.today() - timedelta(days = 1), 
                        type=lambda d: datetime.strptime(d, '%Y%m%d').date(),
                        help="Date in the format yyyymmdd")