2013-02-22 45 views
7

Tôi có một cơ sở dữ liệu postgre với cột dấu thời gian và tôi có dịch vụ REST bằng Python thực hiện truy vấn trong cơ sở dữ liệu và trả về dữ liệu cho giao diện người dùng JavaScript để vẽ biểu đồ sử dụng flot .Chuyển đổi dấu thời gian postgresql thành dấu thời gian bằng JavaScript trong Python

Bây giờ vấn đề tôi có là flot có thể tự động xử lý ngày bằng TIMESTAMP của JavaScript, nhưng tôi không biết cách chuyển đổi dấu thời gian Postgre thành JavaScript TIMESTAMP (CÓ dấu thời gian, chứ không phải chỉnh sửa ngày ngừng nếu bạn không ' t biết câu trả lời) bằng Python. Tôi không biết nếu đây là cách tiếp cận tốt nhất (có thể chuyển đổi có thể được thực hiện bằng JavaScript?). Có cách nào để làm việc này không?

+0

Không có gì là "dấu thời gian Javascript". Có các đối tượng ngày 'Javascript', đó là tất cả. Bạn có thể thử chuyển đổi dấu thời gian thành mili giây từ 1970-01-01 và sử dụng giá trị đó để tạo đối tượng Ngày 'Javascript'. – MaxArt

+0

Bất cứ thư viện nào bạn đang sử dụng để triển khai 'REST' nên hỗ trợ điều này, vì vậy trước khi bạn cố gắng phát minh lại bánh xe, hãy xem thư viện có hỗ trợ nó ra khỏi hộp hay không. –

Trả lời

7

Sử dụng date_part hoặc trích xuất ở postgres để trả lại dấu thời gian.

select date_part('epoch',mydatefield)*1000 from table; 

Sau đó, bạn chỉ có thể gửi mà trên hơn trực tiếp, lưu ý rằng epochgiây kể từ ngày 01 Tháng một 1970, trong khi JS muốn mili giây, do đó *1000. Nếu bạn cần nó thực sự là một ngày, một khi bạn nhận được nó trong Javascript, bạn có thể chuyển đổi nó thành một ngày bằng cách gọi new Date(timestamp_from_pg).

Lưu ý rằng flot có thể hoạt động ngoài dấu thời gian dưới dạng số, không cần thực sự tạo đối tượng Date.

+0

Cảm ơn Ryley đây là những gì tôi đã hỏi, cảm ơn thần bạn đã đọc câu hỏi trước khi tất cả các biên tập viên thay đổi dấu thời gian cho "ngày" trong câu hỏi của tôi –

+0

Tùy thuộc vào cơ sở hạ tầng của bạn, bạn có thể nhận được dấu thời gian từ postgres và làm chuyển đổi sang epoch bằng Python. Cá nhân, tôi cố gắng giữ tất cả các chuyển đổi trong Python để giải phóng càng nhiều tài nguyên trên các máy chủ cơ sở dữ liệu càng tốt. Tôi biết loại chuyển đổi này là một hoạt động tầm thường, nhưng máy chủ cơ sở dữ liệu của tôi luôn làm việc chăm chỉ hơn các máy chủ web. Ngoài ra, tùy thuộc vào những gì bạn đang sử dụng để tương tác với cơ sở dữ liệu (ví dụ: trình điều khiển như psycopg2, orms như sqlalchemy, vv) những gì bạn lấy có thể là một chuỗi hoặc datetime giống như đối tượng cho chuyển đổi. –

2

Bạn không thể gửi đối tượng "datetime" bằng Python hoặc Javascript qua JSON. JSON chỉ chấp nhận nhiều loại dữ liệu cơ bản như Strings, Ints và Floats.

Cách tôi thường làm là gửi văn bản dưới dạng văn bản, sử dụng số datetime.isoformat() của Python rồi phân tích cú pháp ở phía Javascript.

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