2009-03-21 31 views
11

thể trùng lặp:
How do I calculate relative time?Làm thế nào để tạo ra một định dạng ngày thân thiện (ví dụ như "nộp 2 days ago")

Tôi muốn để định dạng ngày trên ứng dụng web xã hội của tôi giống như Digg.com và các trang web khác làm. Ở đó, bạn thấy ngày rất thân thiện, chẳng hạn như:

  • chỉ là bây giờ
  • 3 phút trước
  • một giờ trước
  • 2 tuần trước
  • 6 months ago
  • vv

Trước khi tôi quấn đầu xung quanh việc tạo ra một thứ như vậy, có ai biết về bất kỳ kịch bản sẵn sàng nào để thực hiện điều này không Tôi chỉ cần chèn một dấu thời gian và một văn bản ngày thân thiện được đưa ra dựa trên cách nó liên quan đến thời gian hiện tại?

PS: Tôi cần điều này bằng PHP, nhưng mã giả hoặc bất kỳ ngôn ngữ nào khác cũng được.

Trả lời

10

Đây là bản sao của số question này. Nó có một loạt các mẫu mã về cách thực hiện điều này, ngoài mã mà trang web này sử dụng. Tôi liếc nhìn nó và có vẻ như là một thực hiện PHP được đăng ở đó.

Ngoài tất cả điều này, nếu bạn đang sử dụng jQuery, bạn có thể làm điều này phía máy khách với một cái gì đó giống như các plugin timeago. Nó có lợi thế là cập nhật văn bản khi thời gian trôi qua vì vậy nếu bạn tải trang và thông báo "đã đăng 5 phút trước" và xem lại sau 5 phút, có nội dung "đã đăng 10 phút trước"

2

Cảm ơn tất cả các câu trả lời, và xin lỗi vì câu hỏi trùng lặp. Tôi không tìm thấy bản sao khi tôi đang tìm kiếm nó bởi vì tôi không thực sự biết những thuật ngữ tìm kiếm để sử dụng.

Dù sao, tôi đã giải quyết được sự cố nhờ bản dịch PHP của mã được sử dụng bởi stackoverflow. Tôi đã thực hiện một thay đổi nhỏ trong việc tính toán vùng đồng bằng:

$delta = strtotime(gmdate("Y-m-d H:i:s", time())) - $time; 

Kể từ khi tôi đang lưu trữ ngày của tôi trong MySQL như timestamp trong các định dạng giờ, tôi phải sử dụng cùng một tính thời điểm hiện tại. Điều này làm cho một so sánh trung lập múi giờ, đó là chính xác những gì là cần thiết trong trường hợp của tôi.

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