2012-05-16 34 views

Trả lời

271

Bạn có thể sử dụng strftime để giúp bạn định dạng ngày của mình.

Ví dụ:

import datetime 
t = datetime.datetime(2012, 2, 23, 0, 0) 
t.strftime('%m/%d/%Y') 

sẽ mang lại:

'02/23/2012' 

Thông tin thêm về định dạng thấy here

+2

Rất hữu ích cho 'DateTimeField' hoặc' DateField' trong django. Cảm ơn – erajuan

+0

sử dụng 't = datetime.datetime.now()' để sử dụng ngày hiện tại – gizzmole

+0

Theo như tôi có thể nói từ tài liệu, không có cách nào trả về ngày đệm khác 0 '23/2/2012'. –

10

Bạn có thể sử dụng chuỗi định dạng phương pháp đơn giản:

>>> dt = datetime.datetime(2012, 2, 23, 0, 0) 
>>> '{0.month}/{0.day}/{0.year}'.format(dt) 
'2/23/2012' 
>>> '%s/%s/%s' % (dt.month, dt.day, dt.year) 
'2/23/2012' 
+1

tương tự, bạn có thể làm điều gì đó như ''{:% Y-% m-% d% H:% M}' định dạng (datetime (2001, 2, 3, 4, 5))'.Xem thêm tại pyformat.info – mway

81

datedatetime đối tượng (và time cũng) hỗ trợ một mini-language to specify output, và có hai cách để truy cập vào nó:

  • gọi phương thức trực tiếp: dt.strftime('format here'); và
  • phương pháp định dạng mới: '{:format here}'.format(dt)

Vì vậy, ví dụ bạn có thể trông giống như:

dt.strftime('%m/%d/%Y') 

hoặc

'{:%m/%d/%Y}'.format(dt) 

Đối với đầy đủ lợi ích: bạn cũng có thể truy cập trực tiếp các thuộc tính của đối tượng, nhưng sau đó bạn chỉ nhận được các số:

'%s/%s/%s' % (dt.month, dt.day, dt.year) 

Thời gian thực hiện để tìm hiểu ngôn ngữ mini đáng giá.


Để tham khảo, đây là những mã được sử dụng trong mini-ngôn ngữ:

  • %a Weekday như tên viết tắt là miền địa phương của.
  • %A Ngày trong tuần làm tên đầy đủ của địa phương.
  • %w Ngày trong tuần dưới dạng số thập phân, trong đó 0 là Chủ Nhật và 6 là Thứ Bảy.
  • %d Ngày trong tháng dưới dạng số thập phân không có đệm.
  • %b Tháng làm tên viết tắt của ngôn ngữ.
  • %B Tháng làm tên đầy đủ của địa phương.
  • %m Tháng dưới dạng số thập phân không có đệm. 01, ..., 12
  • %y Năm không có thế kỷ dưới dạng số thập phân không có đệm. 00, ..., 99
  • %Y Năm có thế kỷ dưới dạng số thập phân. 1970, 1988, 2001, 2013
  • %H Giờ (đồng hồ 24 giờ) dưới dạng số thập phân không có đệm. 00, ..., 23
  • %I Giờ (12 giờ đồng hồ) dưới dạng số thập phân không có đệm. 01, ..., 12
  • %p Tương đương với vị trí của AM hoặc PM.
  • %M Phút dưới dạng số thập phân không có đệm. 00, ..., 59
  • %S Thứ hai dưới dạng số thập phân không có đệm. 00, ..., 59
  • %f Số nguyên làm số thập phân, không đệm ở bên trái. 000000, ..., 999999
  • %z UTC bù đắp theo hình thức + hhmm hoặc -HHMM (trống nếu ngây thơ), 0000, -0400, +1030
  • %Z tên múi giờ (trống nếu ngây thơ), UTC, EST, CST
  • %j Ngày trong năm dưới dạng số thập phân không có đệm. 001, ..., 366
  • %U Số tuần trong năm (Chủ Nhật là ngày đầu tiên) dưới dạng số thập phân đệm bằng 0.
  • %W Số tuần trong năm (Thứ hai là thứ nhất) dưới dạng số thập phân.
  • %c Ngày và giờ đại diện phù hợp của địa phương.
  • %x Đại diện ngày thích hợp của địa phương.
  • %X Đại diện thời gian thích hợp của địa phương.
  • %% Ký tự '%' theo nghĩa đen.
+1

tiền thưởng cho phép tổng hợp tốt – tinySandy

1

Ghép nối chuỗi, str.join, có thể được sử dụng để tạo chuỗi.

d = datetime.now() 
'/'.join(str(x) for x in (d.month, d.day, d.year)) 
'3/7/2016' 
14

Một tùy chọn khác:

import datetime 
now=datetime.datetime.now() 
now.isoformat() 
# ouptut --> '2016-03-09T08:18:20.860968' 
0

Bạn có thể chuyển đổi datetime để chuỗi. published_at="{}".format(self.published_at)

-2

Có thể chuyển đổi đối tượng datetime thành chuỗi bằng cách làm việc trực tiếp với các thành phần của đối tượng ngày giờ.

from datetime import date 

myDate = date.today()  
#print(myDate) would output 2017-05-23 because that is today 
#reassign the myDate variable to myDate = myDate.month 
#then you could print(myDate.month) and you would get 5 as an integer 
dateStr = str(myDate.month)+ "/" + str(myDate.day) + "/" + str(myDate.year)  
# myDate.month is equal to 5 as an integer, i use str() to change it to a 
# string I add(+)the "/" so now I have "5/" then myDate.day is 23 as 
# an integer i change it to a string with str() and it is added to the "5/" 
# to get "5/23" and then I add another "/" now we have "5/23/" next is the 
# year which is 2017 as an integer, I use the function str() to change it to 
# a string and add it to the rest of the string. Now we have "5/23/2017" as 
# a string. The final line prints the string. 

print(dateStr) 

Output -> 5/23/2017

+0

Vui lòng sử dụng liên kết [chỉnh sửa] để giải thích cách mã này hoạt động và không chỉ cung cấp mã, vì giải thích có nhiều khả năng giúp người đọc trong tương lai. Xem thêm [trả lời]. [nguồn] (http://stackoverflow.com/users/5244995) –

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