Tôi đã sử dụng phương thức strtotime() của PHP để chấp nhận trường ngày trên biểu mẫu. Tôi thích sức mạnh của nó như thế nào, trong cách nó sẽ chấp nhận "Ngày mai", "Thứ năm tới", hoặc (được cho là) bất kỳ đại diện ngày nào và chuyển đổi nó thành dấu thời gian Unix.PHP strtotime() có vẻ như đang chờ định dạng Euro
Nó đã hoạt động rất tốt - cho đến ngày hôm qua. Ai đó đã nhập "2-4-10" và thay vì đăng nhập vào ngày 4 tháng 2 năm 2010, nó đã đăng nhập ngày 10 tháng 4 năm 2002! Vì vậy, nó dự kiến Y-M-D thay vì M-D-Y.
Tôi nghĩ có thể vấn đề chỉ là sử dụng năm có 2 chữ số, vì vậy chúng tôi đã thử lại với "2-4-2010". Đã đăng nhập ngày 2 tháng 4 năm 2010! Tại thời điểm đó tôi chỉ không hiểu những gì strtotime() đang làm. PHP.net cho biết họ hy vọng một định dạng ngày tiếng Anh của Hoa Kỳ. Tại sao nó lại giả định D-M-Y?
Có cách nào khác không? Hay tôi phải ngừng sử dụng strtotime()?
Lưu ý: Tôi vừa thực hiện kiểm tra. Khi bạn sử dụng dấu gạch chéo thay vì dấu gạch nối/dấu gạch ngang, nó hoạt động tốt, ngay cả với 2/4/10. Tại sao điều đó lại quan trọng? Và nếu đó là tất cả nó, tôi nên chỉ cần chạy str_replace ("-", "/", $ đầu vào) trên đầu vào hình thức trước khi vượt qua nó để strtotime()?
Có, cố gắng bình thường hóa ngày theo một cách nào đó trước khi xử lý bằng strtotime có vẻ như là một ý kiến hay đối với tôi. – JAL
Chỉ cần đợi cho đến khi bạn cố gắng sử dụng strtotime để phân tích * lần *, sau đó bạn sẽ có một số Fun thực sự. (Hãy suy nghĩ múi giờ, DST, v.v.) –