Js Date объект в python datetime - PullRequest
       13

Js Date объект в python datetime

11 голосов
/ 16 ноября 2011

Я работаю с dhtmlxscheduler и отправляю даты на сервер django для обработки.

Dhtmlxscheduler предоставляет мне следующий объект даты, предоставленные методы начинаются со второй строки ниже:

end_date: Sat Nov 19 2011 01:00:00 GMT-0500 (EST)
__proto__: Invalid Date
constructor: function Date() { [native code] }
getDate: function getDate() { [native code] }
getDay: function getDay() { [native code] }
getFullYear: function getFullYear() { [native code] }
getHours: function getHours() { [native code] }
getMilliseconds: function getMilliseconds() { [native code] }
getMinutes: function getMinutes() { [native code] }
getMonth: function getMonth() { [native code] }
getSeconds: function getSeconds() { [native code] }
getTime: function getTime() { [native code] }
getTimezoneOffset: function getTimezoneOffset() { [native code] }
getUTCDate: function getUTCDate() { [native code] }
getUTCDay: function getUTCDay() { [native code] }
getUTCFullYear: function getUTCFullYear() { [native code] }
getUTCHours: function getUTCHours() { [native code] }
getUTCMilliseconds: function getUTCMilliseconds() { [native code] }
getUTCMinutes: function getUTCMinutes() { [native code] }
getUTCMonth: function getUTCMonth() { [native code] }
getUTCSeconds: function getUTCSeconds() { [native code] }
getYear: function getYear() { [native code] }
setDate: function setDate() { [native code] }
setFullYear: function setFullYear() { [native code] }
setHours: function setHours() { [native code] }
setMilliseconds: function setMilliseconds() { [native code] }
setMinutes: function setMinutes() { [native code] }
setMonth: function setMonth() { [native code] }
setSeconds: function setSeconds() { [native code] }
setTime: function setTime() { [native code] }
setUTCDate: function setUTCDate() { [native code] }
setUTCFullYear: function setUTCFullYear() { [native code] }
setUTCHours: function setUTCHours() { [native code] }
setUTCMilliseconds: function setUTCMilliseconds() { [native code] }
setUTCMinutes: function setUTCMinutes() { [native code] }
setUTCMonth: function setUTCMonth() { [native code] }
setUTCSeconds: function setUTCSeconds() { [native code] }
setYear: function setYear() { [native code] }
toDateString: function toDateString() { [native code] }
toGMTString: function toGMTString() { [native code] }
toISOString: function toISOString() { [native code] }
toJSON: function toJSON() { [native code] }
toLocaleDateString: function toLocaleDateString() { [native code] }
toLocaleString: function toLocaleString() { [native code] }
toLocaleTimeString: function toLocaleTimeString() { [native code] }
toString: function toString() { [native code] }
toTimeString: function toTimeString() { [native code] }
toUTCString: function toUTCString() { [native code] }
valueOf: function valueOf() { [native code] }
__proto__: Object

Какой самый простой способ выбрать один из этих методов toString и затем проанализировать его на стороне сервера python, используя datetime.strptime () для создания объекта datetime python?

Простой метод toString возвращает мне дату и время в формате:

Sat Nov 19 2011 00:00:00 GMT-0500 (EST)

Попытка директив другого формата оказывается безуспешной.

т

datetime.strptime("Sat Nov 19 2011 00:00:00 GMT-0500 (EST)", "%a %b %d %Y %H:%M:%S %Z") 
---> unconverted data remains: -0500 (EST)

и

datetime.strptime("Sat Nov 19 2011 00:00:00 GMT-0500 (EST)", "%a %b %d %Y %H:%M:%S %z") 
---> ValueError: 'z' is a bad directive in format '%a %b %d %Y %H:%M:%S %z'

Ответы [ 3 ]

13 голосов
/ 16 ноября 2011

toUTCString () дает:

"Tue, 22 Nov 2011 06:00:00 GMT"

И это возможно с:

datetime.strptime("Tue, 22 Nov 2011 06:00:00 GMT", "%a, %d %b %Y %H:%M:%S %Z")
7 голосов
/ 16 ноября 2011

Похоже, вы получаете что-то похожее на обычный объект Date в javascript.В этом случае самый простой способ, вероятно, заключается в использовании метода getTime для получения метки времени.Он должен возвращать что-то вроде 1321463229215, что является просто отметкой времени в миллисекундах.

datetime's fromtimestamp ожидает отметку времени в секундах, поэтому просто разделите эту отметку времени на 1000.0, и все будет готово

from datetime import datetime
datetime.fromtimestamp(1321463229215 / 1000.0)
1 голос
/ 07 июня 2016

Попробуйте использовать python-dateutil ( pip install python-dateutil )

import dateutil.parser as dt
date_time_obj = dt.parse("Tue, 22 Nov 2011 06:00:00 GMT")

date_time_obj будет объектом datetime

...