2011-08-11 37 views
8

Sử dụng Python, tôi đang lưu trữ ngày & thời gian như datetime.datetime vào GAE. Có cách nào để lấy giá trị của thời gian ngày tính bằng mili giây thay vì phiên bản chuỗi được định dạng đầy đủ không?Trả về mili giây đại diện cho datetime trong python

Dựa trên tài liệu cho datetime.datetime, tôi không thấy bất kỳ phương pháp gốc nào trong lớp thời gian ngày thực hiện việc này. http://docs.python.org/release/2.5.2/lib/datetime-datetime.html

Các giá trị ngày tháng ban đầu được lưu trữ theo cách này:

date_time_float = 1015182600 #some date as timestamp 
date_time_object = datetime.fromtimestamp(date_time_float);             

Khi tôi kéo dữ liệu từ các cửa hàng, đó là các loại:

type(exported_date_time) # type: datetime.datetime 

Có strftime để chuyển đổi thành một chuỗi đại diện nhưng những gì tôi đang tìm kiếm là chuyển đổi 'exported_date_time' thành mili giây.

+1

Bạn không thể lấy dấu thời gian unix và nhân với 1000? –

+0

@agf Câu trả lời của bạn chính là điều tôi đang nói đến. Đối số –

Trả lời

14

Để có được giây kể từ khi kỷ nguyên:

date_time_secs = time.mktime(datetimeobj.timetuple()) 

hoặc cho toàn bộ điều trong miliseconds

date_time_milis = time.mktime(datetimeobj.timetuple()) * 1000 + datetimeobj.microsecond/1000 

hoặc tương đương.

+0

time.mktime là 'struct_time hoặc full 9-tuple thể hiện thời gian theo giờ địa phương chứ không phải UTC'. Làm thế nào để bạn chuyển đổi datetime.datetime vào nó? –

+0

@agf Trong doc, ký hiệu '' datetime.timetuple() '' có nghĩa là ** timetuple() ** là một phương thức của một cá thể của lớp ** datetime ** (của mô-đun ** datetime **); Ngoài ra, ** mktime() ** trả về thời gian Unix, một phao. Hơn nữa, đối với Dan, ** date_time_object ** là một cá thể của ** datetime.datetime **. Sau đó, biểu thức phải là: '' unixtime = time.mktime (date_time_object.timetuple()) '' – eyquem

+0

@agf Tôi đã viết một nhận xét khó hiểu, tôi đã xóa nó. Và tôi không thấy câu trả lời của bạn trước bình luận mới của tôi. Tôi hiểu bây giờ: bạn đang xem xét '' datetime.timetuple() '' như là biểu diễn chung của một ký hiệu _instance.timetuple() _, vì nó được thực hành trong các tài liệu. Nhưng tôi nghĩ rằng việc sử dụng biểu diễn chung này phải được giới hạn trong các tài liệu, không được sử dụng trong các mã thực, nếu không nó sẽ gây nhầm lẫn. Bạn đã sửa chữa và điều đó tốt hơn. Nhưng IMO, tên còn lại ** date_time_object ** cho phao là một lỗ hổng – eyquem

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