2013-03-19 30 views
55

Có cách nào để trích xuất tháng và ngày bằng cách sử dụng isoformats không? Hãy giả định ngày hôm nay là ngày 08 Tháng Ba, 2013.Trích xuất các tháng và số có hai chữ số từ ngày Python

>>> d = datetime.date.today() 
>>> d.month 
3 
>>> d.day 
8 

Tôi muốn:

>>> d = datetime.date.today() 
>>> d.month 
03 
>>> d.day 
08 

tôi có thể làm điều này bằng cách viết câu lệnh if và concatenating 0 hàng đầu trong trường hợp ngày hoặc tháng là một con số nhưng đã tự hỏi liệu có một cách tự động để tạo ra những gì tôi muốn.

+10

'd.strftime ('% m') 'và' d.strftime ('% d') 'này đã nhận được một bản sao. – bernie

+1

Nó là một sự lừa dối - Nhưng tôi phải nói rằng cái này rõ ràng hơn là bản dupe. – mgilson

Trả lời

91

Nhìn vào loại những thuộc tính:

In [1]: import datetime 

In [2]: d = datetime.date.today() 

In [3]: type(d.month) 
Out[3]: <type 'int'> 

In [4]: type(d.day) 
Out[4]: <type 'int'> 

Cả hai đều là số nguyên. Vì vậy, không có tự động cách nào để thực hiện những gì bạn muốn. Vì vậy, theo nghĩa hẹp, câu trả lời cho câu hỏi của bạn là no.

Nếu bạn muốn có số 0 đứng đầu, bạn sẽ phải định dạng chúng theo cách này hay cách khác. Cho rằng bạn có nhiều lựa chọn:

In [5]: '{:02d}'.format(d.month) 
Out[5]: '03' 

In [6]: '%02d' % d.month 
Out[6]: '03' 

In [7]: d.strftime('%m') 
Out[7]: '03' 
+0

Cảm ơn bạn. Đối với những người sử dụng nhiều giá trị với đánh số thủ công, chỉ cần đảm bảo thêm số trước ": 02d", ví dụ: {0}/{1: 02d} - {2: 02d} _ {3} .json'.format (giá trị khác) , currentMonth, currentDay, othervalue2) – Alex

+0

Chỉ cần thêm một phương thức định dạng khác để lấy một chuỗi số không đệm bạn có thể sử dụng hàm 'zfill()' như sau: 'str (d.month) .zfill (2)' –

8

bạn có thể sử dụng trình định dạng chuỗi để đệm bất kỳ số nguyên nào bằng số không. Nó hoạt động giống như của C printf.

>>> d = datetime.date.today() 
>>> '%02d' % d.month 
'03' 
Các vấn đề liên quan