2012-09-11 26 views
5

Đây là mã của tôi:tại sao strftime() trên cửa sổ trả về false? (Tôi không sử dụng% e)

var_dump(strftime("%m-%d-%Y %l:%M:%S", time())); 
echo "<br />"; 
var_dump(strftime("%Y-%d-%m %H:%M:%S", time())); 

Dòng đầu tiên trả về false, và lợi nhuận thứ ba chuỗi dự đoán '2012/10/09 23:03:18' (chiều dài = 19)

Tại sao dòng đầu tiên trả về false?

Tôi đang chạy các cửa sổ 7x64 và wamp với cài đặt khá mặc định.

+0

Cả hai đều trả về chuỗi ngày trên máy (Mac) của tôi, vì vậy có vẻ như bạn đã tìm thấy lỗi. – zneak

+0

bạn nhận được gì với cảnh báo? Cảnh báo: Các tham số CRT không hợp lệ được phát hiện trong C: \ xampp \ htdocs \ time.php trên dòng 3 – Scuzzy

+0

'var_dump (strftime ("% m-% d-% Y% H:% M:% S ", thời gian())); 'return, và bạn sử dụng phiên bản ngôn ngữ nào của Win7? –

Trả lời

5

Nếu dòng đầu tiên không làm việc nhưng điều thứ hai không, sau đó lý do là rõ ràng vì %l

var_dump(strftime("%l", time())); 

Có thực sự ném lỗi trên cửa sổ.

Đọc hướng dẫn trên strftime ...

Không phải tất cả specifiers chuyển đổi có thể được hỗ trợ bởi thư viện C của bạn, trong trường hợp này họ sẽ không được hỗ trợ bởi strftime PHP(). Ngoài ra, không phải tất cả các nền tảng đều hỗ trợ dấu thời gian tiêu cực, vì vậy phạm vi ngày của bạn có thể bị giới hạn không sớm hơn kỷ nguyên Unix. Điều này có nghĩa là% e,% T,% R và,% D (và những người khác) - cũng như ngày trước ngày 1 tháng 1 năm 1970 - sẽ không hoạt động trên Windows, một số bản phân phối Linux và một vài hệ điều hành khác. Đối với các hệ thống Windows, bạn có thể tìm thấy tổng quan đầy đủ về các trình chuyển đổi được hỗ trợ tại »MSDN.

Do đó, %l không được hỗ trợ.

+2

Nó thực sự là l. Cảm ơn bạn đã thông báo (và có thể là những người khác). Tôi phải đã bỏ lỡ nó. Để tham khảo trong tương lai, hãy http://msdn.microsoft.com/en-us/library/fe06s4ak.aspx để biết danh sách các chuyển đổi được hỗ trợ trong Windows –

2

Trong khi gặp vấn đề này trên máy chủ WAMP cục bộ của tôi, tôi đã tìm thấy giải pháp cho %l không hoạt động. Sau khi sửa chữa %e, là %#d, tôi thử nghiệm bằng cách sử dụng %#I trong một giờ mà không cần trước 0 và nó hoạt động hoàn hảo. Vì vậy, bạn có thể sử dụng đây là mã của bạn:

var_dump(strftime("%m-%d-%Y %#I:%M:%S", time())); 

Thật không may, điều này không hoạt động trong môi trường Linux, nó sẽ xuất ra #I thay vì giờ.

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