2011-11-16 38 views
11

Tôi đang làm việc với dhtmlxscheduler và tôi gửi ngày đến máy chủ django để xử lý.Js Date object to python datetime

Dhtmlxscheduler cung cấp cho tôi với các đối tượng ngày sau, các phương pháp được cung cấp bắt đầu từ dòng thứ hai dưới đây:

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 

phương pháp đơn giản nhất cho việc lựa chọn một trong những phương pháp toString và sau đó phân tích nó trên máy chủ python là gì bên sử dụng datetime.strptime() để tạo một đối tượng datetime datthon?

Các phương thức toString đơn giản trả về cho tôi một datetime trong định dạng:

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

Cố các chỉ thị định dạng khác nhau chứng tỏ không thành công.

ví dụ:

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) 

và:

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' 

Trả lời

12

toUTCString() cho phép:

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

Và đó là parsible với:

datetime.strptime("Tue, 22 Nov 2011 06:00:00 GMT", "%a, %d %b %Y %H:%M:%S %Z") 
5

Dường như bạn đang nhận được một cái gì đó giống như một đối tượng Ngày javascript bình thường. Trong trường hợp này, phương pháp dễ nhất có thể là sử dụng phương thức getTime để có dấu thời gian. Nó sẽ trả về một cái gì đó như 1321463229215, mà chỉ là một dấu thời gian tính bằng mili giây.

datetime của fromtimestamp hy vọng một dấu thời gian trong vài giây, vì vậy chỉ cần chia timestamp rằng bằng cách 1000.0 và bạn tốt để đi

from datetime import datetime 
datetime.fromtimestamp(1321463229215/1000.0) 
+2

Thật không may là phương thức trả về đơn vị mili giây sau giây. tức là: giờ: phút: giây: mili giây. – TheOne

+1

Đã thêm bài chỉnh sửa vào bài đăng của NT3RP để thay đổi getUTCMgiây giây thành getTime và chia dấu thời gian cho 1000.0 vì fromtimestamp hy vọng dấu thời gian tính bằng giây, không phải mili giây. – Andrew

1

Hãy thử sử dụng python-dateutil (pips cài đặt python-dateutil)

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

date_time_obj sẽ là đối tượng ngày giờ

Các vấn đề liên quan