将字符串日期转换为时间戳并返回python

时间:2011-09-01 17:06:47

标签: python jquery-ui datetime

您好我正在尝试从jquery UI获取日期输入并将其作为时间戳处理到数据库中并将其读回。我知道我可能需要使用strftime但无法弄清楚如何去做。

日期以MM / DD / YYYY

显示

我想将其转换为时间戳,也可以在选择查询后将其转换为MM / DD / YYYY

1 个答案:

答案 0 :(得分:6)

将字符串解析为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中完成datetime / timetuple / timestamp转换的小图:

         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'