【问题标题】:How to covert simple date-string to ISO-date format in python?如何在 python 中将简单的日期字符串转换为 ISO 日期格式?
【发布时间】:2020-05-28 21:40:33
【问题描述】:

我可以将 ISO 日期格式转换为简单的日期格式,如下所示。

from dateutil.parser import parse
date_string = '2018-03-12T10:12:45Z'
dt = parse(date_string)
print(dt.date())    #prints 2018-03-12
print(dt.time())    #prints 10:12:45
print(dt.tzinfo)    #prints tzutc()

如何以其他方式转换它?示例如下所示

If input is `2018-03-12` , then output should be `2018-03-12T00:00:00Z`
If input is `2018-03-12-10-12-45` , then output should be `2018-03-12T10:12:45Z`

我正在接受两个输入 (format : yyyy-mm-dd) 并尝试在 iso-format 中形成从开始日期到结束日期之间的日期范围。我该怎么做(如下)?

input1 : `2018-03-12` , output1 : `2018-03-12T00:00:000Z` (12AM, 24-hr format)
input2 : `2018-03-15` , output2 : `2018-03-15T23:59:000Z` (11:59PM, 24-hr format)

解决方案:

import dateutil.parser
from datetime import datetime
import time
input1="2018-03-12"
input2="2018-03-15"+" 01:02:03.004"
output1=dateutil.parser.parse(input1)
output2=dateutil.parser.parse(input2)
output1 = "%s:%06.3f%s" % (output1.strftime('%Y-%m-%dT%H:%M'),float("%06.3f" % (output1.second+output1.microsecond / 1e6)),output1.strftime('Z'))
output2 = "%s:%06.3f%s" % (output2.strftime('%Y-%m-%dT%H:%M'),float("%06.3f" % (output2.second+output2.microsecond / 1e6)),output2.strftime('Z'))
print(output1)
print(output2)

输出:

2018-03-12T00:00:00.000Z
2018-03-15T01:02:03.004Z

【问题讨论】:

    标签: python-3.x python-dateutil


    【解决方案1】:

    你可以使用datetime模块(如果只有2个预期模式,你可以简单地尝试除外)

    str_date = '2018-03-12'
    
    def convert(x):
        try:
            return datetime.strptime(x, '%Y-%m-%d-%H-%M-%S')
        except ValueError:
            return datetime.strptime(x, '%Y-%m-%d')
    
    convert(str_date)
    

    【讨论】:

    • 我正在接受两个输入(格式:yyyy-mm-dd)并尝试以 iso 格式在从日期和到日期之间形成日期范围。我该怎么做(如下)?输入1:2018-03-12,输出1:2018-03-12T00:00:000Z(12AM,24 小时制)输入2:2018-03-15,输出2:2018-03-15T23:59:000Z(11:59PM,24 小时制)
    • 谢谢。我得到它并在上面发布了解决方案。
    • @StackGuru 太棒了!为了帖子的完整性,也许您可​​以将您的解决方案放入“回答您自己的问题”部分并接受它
    • 感谢您提及。我没有看到“回答你自己的问题”,但我看到了“回答你的问题”。希望这是正确的,如果不让我知道。没用过。
    • @StackGuru 是的,这就是按钮。我解释了它:D
    【解决方案2】:

    解决方案:

    import dateutil.parser
    from datetime import datetime
    import time
    input1="2018-03-12"
    input2="2018-03-15"+" 01:02:03.004"
    output1=dateutil.parser.parse(input1)
    output2=dateutil.parser.parse(input2)
    output1 = "%s:%06.3f%s" % (output1.strftime('%Y-%m-%dT%H:%M'),float("%06.3f" % (output1.second+output1.microsecond / 1e6)),output1.strftime('Z'))
    output2 = "%s:%06.3f%s" % (output2.strftime('%Y-%m-%dT%H:%M'),float("%06.3f" % (output2.second+output2.microsecond / 1e6)),output2.strftime('Z'))
    print(output1)
    print(output2)
    

    输出:

    2018-03-12T00:00:00.000Z
    2018-03-15T01:02:03.004Z
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多