2010-03-15 30 views
8

Tôi đang sử dụng PHP và jQuery để xây dựng một dòng thời gian tương tác cần hiển thị ngày giữa 1500 và 2020. Tôi thường sử dụng hàm strtotime của PHP khi làm việc với ngày, nhưng nó không hoạt động cho các ngày trước năm 1900.Làm cách nào tôi có thể làm việc với ngày trước 1900 trong PHP?

Ngày tháng đến từ cơ sở dữ liệu MySQL và được định dạng là chuỗi như "January 31, 1654" (đây có thể không phải là định dạng lý tưởng, nhưng tôi không thể thay đổi cách chúng được lưu trữ). Tôi đang sử dụng PHP để phân tích các ngày, về cơ bản chuyển đổi chúng thành các giá trị pixel xác định nơi chúng được hiển thị trên dòng thời gian.

Cách dễ nhất để phân tích những ngày lịch sử này là gì?

Trả lời

9

Lớp DateTime, ở đây, có thể giúp (quoting):

Mỗi thành phần của ngày (ví dụ năm) là nội bộ lưu trữ như số 64-bit nên tất cả các ngày có thể tưởng tượng (bao gồm năm âm) được hỗ trợ.


Nhưng lưu ý rằng:

  • Nó chỉ tồn tại trong PHP> = 5.2
  • Và một số phương pháp chỉ tồn tại trong PHP> = 5,3

Vì vậy: hãy cẩn thận trong đó các phương pháp bạn đang sử dụng, nếu bạn đang phát triển trên PHP 5.3 và muốn phần mềm của bạn tương thích với PHP 5.2


Một giải pháp (đặc biệt, nếu sử dụng Zend Framework trong ứng dụng của bạn) sẽ là thành phần Zend_Date (quoting):

Mặc dù PHP 5.2 tài liệu nhà nước, "The phạm vi hợp lệ của một timestamp là thường từ Fri, 13 Tháng 12 năm 1901 20:45:54 GMT đến Tue, 19 Tháng một 2038 03:14:07 GMT,"Zend_Date hỗ trợ một phạm vi gần không giới hạn, với sự giúp đỡ của phần mở rộng BCMath

+0

Điều đó giúp tôi đi đúng hướng, cảm ơn rất nhiều! – shipshape

+0

Bạn được chào đón :-) Hãy vui vẻ! –

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