【问题标题】:How to convert different formats of date into one format using python [duplicate]如何使用python将不同格式的日期转换为一种格式[重复]
【发布时间】:2017-10-23 08:18:01
【问题描述】:

输入:一个日期字段,包含各种格式的日期(包括:yyyy/dd/mmdd-mm-yyyy等),例如:

2017/5/23
22-04-2015
20150504

输出:统一格式的日期字段。所有日期值都应转换为yyyymmdd 格式。即上述输入应生成输出为:

20170523
20150422
20150504

我尝试使用dateutils,但输出格式为 2015-05-23

from datetime import datetime
INPUT_FILENAME = 'date.txt'
OUTPUT_FILENAME = 'newfile.txt'
INPUT_DATE_FORMATS = {'column1dt': '%Y%m%d', 'column1dt': '%d/%m/%Y'}
OUTPUT_DATE_FORMAT = '%Y%m%d'
with open(INPUT_FILENAME, 'rt') as finput:
reader = finput.readlines()
with open(OUTPUT_FILENAME, 'wt') as foutput:
    print foutput 
    for row in reader: 

【问题讨论】:

  • 您也可以将日期转换为序数日期并将其转换回任何所需格式
  • @reddy,你有什么意见?是字符串类型的吗?

标签: python python-2.7


【解决方案1】:

你可以这样做:

import datetime

datetime_object = datetime.datetime.strptime('22-04-2015', '%d-%m-%Y')
datetime_output = datetime_object.strftime('%Y%m%d')

然后您更改日期的格式以满足您的需要。

【讨论】:

    【解决方案2】:

    您可以通过以下方式猜测日期字符串的格式:

    import datetime
    
    def guess_date(string):
        for fmt in ["%Y/%m/%d", "%d-%m-%Y", "%Y%m%d"]:
            try:
                return datetime.datetime.strptime(string, fmt).date()
            except ValueError:
                continue
        raise ValueError(string)
    

    下面的示例:

    samples = "2017/5/23", "22-04-2015", "20150504"
    
    for sample in samples:
        print(guess_date(sample))
    

    你得到:

    2017-05-23
    2015-04-22
    2015-05-04
    

    使用d.strftime("%Y%m%d") 选择您想要的格式:

    for sample in samples:
        d = guess_date(sample)
        print(d.strftime("%Y%m%d"))
    

    您还可以使用dateutil.parser 解析任何格式的日期。

    查看示例:

    >>> from dateutil.parser import *
    >>> now = parse("Sat Oct 11 17:13:46 UTC 2003")
    

    【讨论】:

    • 您需要更多解释吗?如果没有,我建议您投票并accept我的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多