【问题标题】:For the Python library parsedatetime, what do the trailing return values mean?对于 Python 库 parsedatetime,尾随返回值是什么意思?
【发布时间】:2020-01-12 08:41:17
【问题描述】:

例如,

import parsedatetime p = parsedatetime.Calendar() p.parse("on December 15th")

会回来

(time.struct_time(tm_year=2020, tm_mon=12, tm_mday=15, tm_hour=13, tm_min=41, tm_sec=47, tm_wday=5, tm_yday=11, tm_isdst=0), 1)

我主要想知道tm_wdaytm_ydaytm_isdst 以及逗号后面的最后一个数字(在本例中为1 的意思)。

【问题讨论】:

    标签: python-3.x package


    【解决方案1】:

    time.struct_time 的那些字段仅表示:

    • tm_wday: 星期几(星期一是 0)
    • tm_yday: 一年中的哪一天(1 月 1 日是 1)
    • tm_isdst: 夏令时 (DST) 是有效 (1)、无效 (0) 还是未知 (-1)

    详情请参阅documentation

    parsedatetimeCalendar 类的 parse 方法返回 2 个元素的元组:struct_time 和解析状态(在您的情况下,逗号后面的 1)。状态告诉你是否找到parse

    • 0: 没什么
    • 1:一个日期
    • 2:一次
    • 3: 日期时间

    详情请参阅documentation

    嗯,好的,文档有些不完整,所以我必须找出其余的。这里是:

    Calendar.parse() 有一个可选的第二个参数 struct_time 它调用sourceTime,用作返回的起点 struct_time。如果未提供sourceTime,则从调用时开始构造。

    “有趣”的部分是,只有sourceTime 的某些字段被 parse 方法,更改哪些字段取决于解析状态。而且,最令人困惑的是,tm_wdaytm_ydaytm_isdst 永远不会 变了!

    如果解析状态为

    • 0,没有更改任何字段
    • 1,只有tm_yeartm_montm_mday发生变化
    • 2,只有tm_hourtm_mintm_sec发生变化
    • 3,只有tm_yeartm_montm_mdaytm_hourtm_mintm_sec发生变化

    根据您的输出,我可以看到您是在 1 月 11 日星期六下午 1:41:47 拨打电话的。

    【讨论】:

    • 知道了,知道了 - 但现在我很困惑为什么会收到:tm_wday=5, tm_yday=11,当 12 月 15 日是星期二,而且绝对不是每月的第 11 天?
    • 有趣的问题,我将不得不深入研究。
    • 好吧,我发现...很奇怪!难怪人们通常会从struct_time 中提取有意义的值,而将其余的不理会......
    • 有趣!是否有一个函数可以更好地从parsedatetime 的主要信息中返回星期几?
    • 另外,想知道您是否也对此有任何见解,关于parsedatetime 的一个单独问题我在SO 上发布:stackoverflow.com/questions/59708073/…
    猜你喜欢
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    相关资源
    最近更新 更多