【问题标题】:Converting String Date to Timestamp and back python将字符串日期转换为时间戳并返回 python
【发布时间】:2011-09-01 17:06:47
【问题描述】:

您好,我正在尝试从 jquery UI 获取日期输入并将其作为时间戳处理到数据库中,然后将其读回。我知道我可能需要使用 strftime,但不知道该怎么做。

日期为 MM/DD/YYYY

我想将其转换为时间戳,并在选择查询后将其返回到 MM/DD/YYYY

【问题讨论】:

    标签: python jquery-ui datetime


    【解决方案1】:

    将字符串解析为datetime.datetime对象:

    In [23]: import datetime
    In [29]: datetime.datetime.strptime('9/1/2011','%m/%d/%Y')
    Out[29]: datetime.datetime(2011, 9, 1, 0, 0)
    

    这是一个小图,描述了 Python 中如何完成日期时间/时间元组/时间戳转换:

             o------------o
             |            |  dt.datetime.utcfromtimestamp (*)
             |            |<-----------------------------------o 
             |            |                                    |
             |  datetime  |                                    |
             |            |  dt.datetime.fromtimestamp         |
             |            |<----------------------------o      |
             |            |                             |      |
             o------------o                             |      |
                |   ^                                   |      |
     .timetuple |   |                                   |      |
                |   | dt.datetime(*tup[:6])             |      |
                v   |                                   |      |
             o------------o                          o------------o
             |            |-- calendar.timegm (*) -->|            |
             |            |                          |            |
             |            |---------- time.mktime -->|            |
             |  timetuple |                          |  timestamp |
             |            |<-- time.localtime -------|            |
             |            |                          |            |
             |            |<-- time.gmtime (*)-------|            |
             o------------o                          o------------o
    
    (*) Interprets its input as being in UTC and returns output in UTC
    

    因此,将其转换为时间戳(将输入视为本地日期时间):

    In [30]: import time
    
    In [31]: time.mktime(datetime.datetime.strptime('9/1/2011','%m/%d/%Y').timetuple())
    Out[31]: 1314849600.0
    

    将其转换为时间戳(将输入视为 UTC 日期时间):

    In [32]: import calendar
    
    In [33]: calendar.timegm(datetime.datetime.strptime('9/1/2011','%m/%d/%Y').timetuple())
    Out[33]: 1314835200
    

    将其转换回 MM/DD/YYYY 格式的字符串:

    In [34]: timestamp=1314849600.0
    In [35]: datetime.datetime.fromtimestamp(timestamp).strftime('%m/%d/%Y')
    Out[35]: '09/01/2011'
    

    或(如果时间戳是相对于 UTC):

    In [36]: datetime.datetime.utcfromtimestamp(timestamp).strftime('%m/%d/%Y')
    Out[36]: '09/01/2011'
    

    【讨论】:

    • 运行这些示例时,我收到错误消息:NameError: name 'wckCalendar' is not defined。我在 Windows 32 位机器上运行 Python 3.4.1。有任何想法吗?谢谢。
    • 错误是说 Python 遇到了一个名为 wckCalendar 的变量,该变量尚未定义。也许代码指的是这个Tkinter module?无论如何,这个错误似乎与我上面发布的代码无关,所以请开始一个新问题以获得进一步的帮助。
    • 我也对wckCalendar 以及它与运行上面的代码有什么关系感到困惑。除了上面答案中突出显示的内容外,我的代码中没有包含任何其他内容。刚刚按照您的建议打开了一个关于此here 的新线程。感谢您的 cmets。
    猜你喜欢
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 2018-10-14
    • 2022-01-14
    • 2011-05-05
    • 2014-08-23
    • 1970-01-01
    相关资源
    最近更新 更多