2011-09-01 145 views
2

您好我正在尝试从jQuery UI中获取日期输入并将其作为时间戳记并作为时间戳记读取到数据库中。我知道我可能需要使用strftime,但无法弄清楚如何去做。将字符串日期转换为时间戳并返回python

日期就会出现,MM/DD/YYYY

我想将它转换成标,也将选择查询后返回MM/DD/YYYY

回答

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) 

这里是描述日期时间/ timetuple /时间戳转换的方式在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' 
+0

当我运行这些示例时,出现错误消息:NameError:name'wckCalendar'未定义。我在Windows 32位机器上运行Python 3.4.1。有任何想法吗?谢谢。 – sedeh

+0

错误是说Python遇到一个名为'wckCalendar'的变量,它尚未定义。也许代码是指这个[Tkinter模块](http://effbot.org/zone/wcklib-calendar.htm)?无论如何,这个错误似乎与我在上面发布的代码无关,所以请开始一个新的问题以获得进一步的帮助。 – unutbu

+0

我还关注'wckCalendar'和它与运行上面的代码有什么关系。除了上述答案中突出显示的内容之外,我不在代码中包含任何其他内容。正如你所建议的那样,刚刚打开了一个关于这个[这里]的新主题(http://stackoverflow.com/questions/25299371/converting-string-date-to-timestamp-in-python-3-4)。感谢您的意见。 – sedeh

相关问题