2010-02-23 62 views
19

Tôi đang cố gắng để chuyển đổi một chuỗi "20091229050936" vào "05:09 ngày 29 tháng 12 năm 2009 (UTC)"Chuyển đổi một chuỗi thành một chuỗi ngày thời gian được định dạng sử dụng Python

>>>import time 
>>>s = time.strptime("20091229050936", "%Y%m%d%H%M%S") 
>>>print s.strftime('%H:%M %d %B %Y (UTC)') 

cho AttributeError: 'time.struct_time' object has no attribute 'strftime'

Rõ ràng, tôi đã phạm sai lầm: thời gian là sai, đó là một đối tượng datetime! Nó có ngày thành phần thời gian!

>>>import datetime 
>>>s = datetime.strptime("20091229050936", "%Y%m%d%H%M%S") 

cho AttributeError: 'module' object has no attribute 'strptime'

Làm sao tôi có nghĩa là để chuyển đổi một chuỗi thành một ngày-chuỗi định dạng?

Trả lời

10

time.strptime trả về time_struct; time.strftime chấp nhận một time_struct như một tham số tùy chọn:

>>>s = time.strptime(page.editTime(), "%Y%m%d%H%M%S") 
>>>print time.strftime('%H:%M %d %B %Y (UTC)', s) 

cho 05:09 29 December 2009 (UTC)

40

Đối datetime đối tượng, strptime là một static method của lớp datetime, không phải là một chức năng miễn phí trong module datetime:

>>> import datetime 
>>> s = datetime.datetime.strptime("20091229050936", "%Y%m%d%H%M%S") 
>>> print s.strftime('%H:%M %d %B %Y (UTC)') 
05:09 29 December 2009 (UTC) 
+1

điểm pedantic: Đó là một phương pháp lớp học, không phải là một phương pháp tĩnh. Sự khác biệt là các phương thức lớp được truyền cho chính lớp đó làm đối số và do đó có thể hoạt động linh hoạt cho các lớp con; các hàm tạo khác (như 'strptime') luôn luôn (hoặc ít nhất phải luôn luôn) là các phương thức lớp. – ShadowRanger

1

Đối với tôi, điều này là tốt nhất và nó hoạt động trên Google App Engine cũng như

Ví dụ hiển thị UTC-4

import datetime 
UTC_OFFSET = 4 
local_datetime = datetime.datetime.now() 
print (local_datetime - datetime.timedelta(hours=UTC_OFFSET)).strftime("%Y-%m-%d %H:%M:%S") 
1
from datetime import datetime 
s = datetime.strptime("20091229050936", "%Y%m%d%H%M%S") 
print("{:%H:%M %d %B %Y (UTC)}".format(s)) 
1

Bạn có thể sử dụng easy_date để làm cho nó dễ dàng:

import date_converter 
my_datetime = date_converter.string_to_string("20091229050936", "%Y%m%d%H%M%S", "%H:%M %d %B %Y (UTC)") 
Các vấn đề liên quan