2011-11-21 25 views
5

Tôi có một bảng cơ sở dữ liệu với các bài báo và mỗi bài viết này có một ngày gửi. Tôi cần tính toán ngày và giờ kể từ khi bài viết được xuất bản trong cơ sở dữ liệu, như:Python - Cách tính thời gian trôi qua kể từ ngày X?

This article has been published 4 hours ago. 
This article has been published 3 days and 4 hours ago. 

Đã có một số mã để tôi có thể sử dụng lại? Tôi đã tìm kiếm trên google, nhưng có lẽ tôi không sử dụng đúng từ.

Bất kỳ đầu mối nào có thể giúp tôi?

Best Regards,

Trả lời

9

Hãy xem datetime package, nó có mọi thứ bạn cần.

khi bạn trừ một ngày giờ khác với ngày giờ khác, bạn sẽ nhận được đối tượng timedelta. Bạn có thể sử dụng total_seconds() để nhận thời lượng tính bằng giây và sử dụng phân chia để chuyển đổi thành giờ và ngày. Sau đó, công việc duy nhất của bạn sau đó là định dạng nó thành một chuỗi có thể đọc được.

+0

FWIW, str() được gọi trên một đối tượng datetime.timedelta tạo một chuỗi được định dạng như: '4 days, 23: 58: 57.256000' Tôi không nghĩ rằng có một cách để thay đổi định dạng, nhưng nó giúp bạn tiết kiệm một số công việc nếu nó một định dạng có thể chấp nhận được. – Jeremiah

+0

Câu trả lời tuyệt vời, nhưng xin lưu ý rằng phương pháp liên quan của lớp timedelta là total_seconds –

+0

@ShmilTheCat, cảm ơn vì đã nhận thấy rằng, tôi đã thực hiện một chỉnh sửa. –

4

tôi muốn chuyển đổi từ ngày nộp vào một datetime, sau đó sử dụng một cái gì đó giống như https://gist.github.com/207624 để chuyển đổi datetime thành một chuỗi nhân bản.

+1

Người bỏ phiếu: bạn có thể giải thích tại sao bạn cho rằng đây là câu trả lời không tốt để tôi có thể cải thiện câu trả lời trong tương lai của mình không? –

+0

Xin chào. Bạn có một lỗi đơn giản trên dòng thứ 9 của mã của bạn. Nó nói: 'dt = otherdate - now' nhưng thực sự nên là một cách khác. Có lẽ đó là lý do để người bỏ phiếu bỏ phiếu xuống. – Firebowl2000

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