2010-01-28 33 views

Trả lời

165

Lớp datetime có phương thức strftime. strftime() Behavior trong tài liệu Python ghi lại các định dạng khác nhau mà nó chấp nhận.

Ví dụ cụ thể này, nó sẽ giống như thế:

my_datetime.strftime("%B %d, %Y") 
6

đọc strfrtime từ các tài liệu chính thức.

78

Đây là cách bạn có thể thực hiện chức năng định dạng chung giống nhau sử dụng python của ...

>>>from datetime import datetime 
>>>"{:%B %d, %Y}".format(datetime.now()) 

Các nhân vật định dạng sử dụng ở đây giống như được sử dụng bởi strftime. Đừng bỏ lỡ số : hàng đầu trong công cụ định dạng.

Sử dụng định dạng() thay vì strftime() trong hầu hết các trường hợp có thể làm cho mã dễ đọc hơn, dễ dàng hơn để viết và phù hợp với cách ra định dạng được tạo ra ...

>>>"{} today's date is: {:%B %d, %Y}".format("Andre", datetime.now()) 

So sánh trên với sau strftime() thay thế ...

>>>"{} today's date is {}".format("Andre", datetime.now().strftime("%B %d, %Y")) 

Hơn nữa, sau đây sẽ không làm việc ...

>>>datetime.now().strftime("%s %B %d, %Y" % "Andre") 
Traceback (most recent call last): 
    File "<pyshell#11>", line 1, in <module> 
    datetime.now().strftime("%s %B %d, %Y" % "Andre") 
TypeError: not enough arguments for format string 

Và cứ thế ...

+1

Tôi đã tự hỏi những lợi ích của việc sử dụng định dạng() cho trường hợp này là gì, trên strftime(). Liệu một trong hai phương pháp có mang lại lợi ích khác với sở thích cá nhân không? Sự khác biệt về hiệu suất là gì? – Andre

+2

@Andre Cảm ơn câu hỏi của bạn! Tùy chọn cá nhân thường được hướng dẫn bởi kinh nghiệm. Xin vui lòng xem câu trả lời cập nhật của tôi cho lý do tại sao tôi thích định dạng() trên strftime(). Hiệu suất và Python là hai từ mà không đi tốt với nhau. Tôi sẽ không quá lo lắng về hiệu năng nếu tôi quyết định sử dụng Python. Khi tôi cần hiệu suất, tôi sử dụng một số ngôn ngữ hiệu suất cao được đánh máy tĩnh. –

+0

Phương pháp định dạng đơn giản hơn trong hầu hết các trường hợp. So sánh: 'in 'Hôm nay là {:% B% d,% Y}' định dạng (datetime.now())' thành 'in 'Hôm nay là {}'. Format (datetime.now(). Strftime ('% B% d,% Y ') 'Khi bạn đang sử dụng phương thức format() anyways, tại sao không sử dụng nó cho định dạng ngày? – ChaimG

-1

Đây là định dạng ngày?

def format_date(day, month, year): 
     # {} betekent 'plaats hier stringvoorstelling van volgend argument' 
     return "{}/{}/{}".format(day, month, year) 
3

câu hỏi rất cũ, tôi biết. nhưng với f-strings mới (bắt đầu từ python 3.6) có các tùy chọn mới. vì vậy ở đây để hoàn thành:

from datetime import datetime 

dt = datetime.now() 

# str.format 
strg = '{:%B %d, %Y}'.format(dt) 
print(strg) # July 22, 2017 

# datetime.strftime 
strg = dt.strftime('%B %d, %Y') 
print(strg) # July 22, 2017 

# f-strings in python >= 3.6 
strg = f'{dt:%B %d, %Y}' 
print(strg) # July 22, 2017 

strftime() and strptime() Behavior giải thích ý nghĩa của định nghĩa thông số.

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