2012-05-29 43 views
15

Tôi có thể thiếu một sự khác biệt nền tảng rõ ràng rằng tôi nên được sức chứa nhưng tôi nhận được điều này khi cố gắng để làm một định dạng thời gian (Python2.7) ...Python thời gian định dạng khác nhau trong Windows

trong Linux env:

>>> import time 
>>> time.strftime("%a, %d-%b-%Y %T GMT", time.gmtime()) 
'Tue, 29-May-2012 21:42:04 GMT' 

trong Windows:

>>> import time 
>>> time.strftime("%a, %d-%b-%Y %T GMT", time.gmtime()) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: Invalid format string 

các tuples trở về từ time.gmtime() dường như giống nhau, vì vậy tôi không hoàn toàn chắc chắn những gì tôi cần phải thay đổi.

+0

chỉ để đảm bảo, bạn đang sử dụng cùng một phiên bản Python chính xác trên cả hai nền tảng? – Levon

Trả lời

13

Nói chung, bạn sẽ thấy rằng trăn time.strftime() hỗ trợ cùng một bộ định dạng định dạng như nền tảng (hoặc nền tảng của libc cụ thể hơn) nó chạy trên. Tuy nhiên, chỉ một tập hợp con trong số này là di động. Xem http://docs.python.org/library/time.html để biết danh sách. Để trích dẫn tài liệu:

chỉ thị bổ sung có thể được hỗ trợ trên nền tảng nhất định, nhưng chỉ những người được liệt kê ở đây có một ý nghĩa tiêu chuẩn hóa bởi ANSI C.

Trong trường hợp này, %T có thể được thay thế bằng %H:%M:%S.

+2

Đây là danh sách các ký tự định dạng được hỗ trợ bởi Windows strftime: http://msdn.microsoft.com/en-us/library/fe06s4ak.aspx – Joakim

0

Tôi không thấy chỉ thị định dạng %T liệt kê trong Python documentation - không phải có sẵn/thực hiện cho nền tảng Windows (Tôi đã thử với cả hai Python v2.7.3 và 3.2.3 chỉ là bây giờ)

0

tôi thấy rằng tôi đã có vấn đề này bởi vì MacOS hỗ trợ "%D" và tôi đã phải thay thế nó bằng "%m/%d/%Y" để làm cho nó đa nền tảng. Nói chung, việc kết hợp các chuỗi định dạng 'đơn giản' như %m có vẻ an toàn hơn so với sử dụng các chuỗi 'tổng hợp' như %T hoặc %D.

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