Có một số niềm vui khi chụp ảnh trong Công viên Regent's. Chú chim đáng yêu này khá bối rối với thứ băng giá này. … https. //t. co/LBhLFb52JR
twitter — Ngày 19 tháng 1, 23. 06 UTC
tôi đi bộ 10. 9km trong 1h48m47s
người chạy — ngày 19 tháng 1, 12. 51 UTC
Lấy tháng tiếp theo bằng PHP
London, Vương quốc Anh
Thứ sáu, ngày 08 tháng 01 năm 2010, ngày 09. 13 giờ GMT
Người dùng PHP hết lần này đến lần khác phàn nàn rằng next month
trong trình phân tích cú pháp chuỗi ngày của PHP không chuyển sang tháng tiếp theo mà thay vào đó chuyển sang tháng sau;
Đầu ra của tập lệnh nhỏ sẽ là
0. Tháng 3 rõ ràng không theo sau tháng 1 vì tháng 2 ở giữa. Tuy nhiên, hành vi hiện tại là đúng. Điều sau đây xảy ra trong nội bộ
next month
tăng số tháng [ban đầu là 1] lên một. Điều này làm cho ngàyTháng thứ hai [tháng 2] chỉ có 28 ngày trong năm 2010, vì vậy PHP tự động sửa lỗi này bằng cách tiếp tục đếm ngày từ ngày 1 tháng 2. Sau đó, bạn kết thúc vào ngày 3 tháng 3
Định dạng loại bỏ năm và ngày, dẫn đến kết quả là
Có thể dễ dàng nhận thấy điều này khi lặp lại ngày với định dạng ngày đầy đủ, định dạng này sẽ xuất ra
4
Để có được hành vi chính xác, bạn có thể sử dụng một số PHP 5. Chức năng mới của 3 giới thiệu khổ thơ thời gian tương đối
5. Khổ thơ này có thể được sử dụng kết hợp với
next month
, 7 hoặc
8 để đi đến ngày đầu tiên của tháng được chỉ định. Thay vì
next month
từ ví dụ trước, chúng tôi sử dụng 0 ở đây
Tập lệnh này sẽ xuất chính xác
1. Những điều sau đây xảy ra khi PHP xử lý đoạn thơ
0 này
next month
tăng số tháng [ban đầu là 1] lên một. Điều này làm cho ngàyĐịnh dạng loại bỏ năm và ngày, dẫn đến kết quả là
Bên cạnh
5, có một
9 tương đương để đi đến ngày cuối cùng của một tháng. Ví dụ sau minh họa điều này
Điều này xuất ra
0. Nội bộ sau đây xảy rastrtotime nor DateTime::modify even mention that such a standard exists, let alone where to read it. A very buried user comment is not good enough.
FYI, các tài liệu GNU cho biết "tiếp theo" chỉ được chuyển đổi thành "1" như trong "+1 tháng", vì vậy có lẽ không nên sử dụng thuật ngữ "tiếp theo" vì nó dẫn đến loại mơ hồ này
Jason
Thứ tư, ngày 31 tháng 3 năm 2010, ngày 23. 13 giờ UTC
[A] Tôi đồng ý 100% với Ken rằng hành vi đó không phải là điều mà lập trình viên mong đợi
[B] Mặc dù hành vi không như mong đợi, nhưng "làm theo một tiêu chuẩn sai còn tốt hơn là không có tiêu chuẩn nào cả". Bạn có thể thừa nhận rằng hành vi không phù hợp với mong đợi nhưng vẫn là lựa chọn tốt nhất với các tiêu chuẩn GNU thực tế
[C] Việc thiếu tài liệu là một vấn đề thực sự. Giống như Ken đã nói, mọi người sẽ gửi lỗi chống lại điều này cho đến hết thời gian vì có vẻ như đó là một trường hợp rõ ràng về lỗi đối với lập trình viên khi họ lần đầu tiên gặp phải hành vi đó. Quan trọng hơn các lỗi đã nộp là các lỗi này gây ra trong các chương trình của người dùng cuối. Điều này hết sức khó chịu đã xảy ra với bất kỳ lập trình viên nào. Một lỗi chỉ xảy ra hai ngày một tháng trong một chương trình đang hoạt động khác. ôi. Điều này phải được đưa ra trạng thái Cảnh báo trong strtotime[] trong sách hướng dẫn và bất kỳ nơi nào khác chuỗi thời gian tương đối được đề cập
[D] Với sự bổ sung tuyệt vời của "ngày đầu tiên" và "ngày cuối cùng của" [cảm ơn. ] và thực tế là có các lựa chọn thay thế cho "tháng tới" và "tháng trước", "tháng tới" và "tháng trước" không được dùng nữa. Nếu chúng được sử dụng riêng lẻ [theo cách kích hoạt hành vi đầu tiên mà bạn mô tả chứ không phải hành vi thứ hai], thì người dùng sẽ nhận được cảnh báo và thông báo không dùng nữa [bất kể mức độ lỗi/quy trình thông thường trong PHP đối với chức năng không dùng nữa]. Tôi không nghĩ rằng đó là một vấn đề khi loại bỏ nó trong PHP khi nó không được dùng trong libc hoặc những nơi khác. Quá trình loại bỏ chức năng không trực quan này cần phải bắt đầu ở đâu đó, cũng có thể là trong PHP. Tôi không nghĩ rằng nó nên bị xóa hoàn toàn trừ khi nó bị xóa ngược dòng, nhưng việc ngừng sử dụng vô thời hạn có vẻ hoàn toàn phù hợp