Câu trả lời:
Bạn có thể sử dụng strftime để giúp bạn định dạng ngày của bạn.
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 xem tại đây
t = datetime.datetime.now()
để sử dụng ngày hiện tại
date
và datetime
các đối tượng (và time
cũng) hỗ trợ một ngôn ngữ nhỏ để chỉ định đầu ra và có hai cách để truy cập nó:
dt.strftime('format here')
; và'{:format here}'.format(dt)
Vì vậy, ví dụ của bạn có thể trông giống như:
dt.strftime('%m/%d/%Y')
hoặc là
'{:%m/%d/%Y}'.format(dt)
Để hoàn thiện hơn: 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 để học ngôn ngữ mini là xứng đáng.
Để tham khảo, đây là các mã được sử dụng trong ngôn ngữ nhỏ:
%a
Ngày trong tuần như tên viết tắt của miền địa phương. %A
Ngày trong tuần như 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 có đệm.%b
Tháng như tên viết tắt của miền địa phương.%B
Tháng như tên đầy đủ của địa phương.%m
Tháng như một số thập phân không đệm. 01, ..., 12 %y
Năm không có thế kỷ là một số thập phân không đệm. 00, ..., 99 %Y
Năm với thế kỷ là một số thập phân. 1970, 1988, 2001, 2013 %H
Giờ (đồng hồ 24 giờ) dưới dạng số thập phân có đệm. 00, ..., 23 %I
Giờ (đồng hồ 12 giờ) dưới dạng số thập phân có đệm. 01, ..., 12 %p
Địa điểm tương đương với AM hoặc PM.%M
Phút như một số thập phân không đệm. 00, ..., 59 %S
Thứ hai là một số thập phân không đệm. 00, ..., 59%f
Microsecond như một số thập phân, không đệm ở bên trái. 000000, ..., 999999%z
UTC bù ở dạng + 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 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 có đệm bằng không.%W
Số tuần trong năm (thứ hai là đầu tiên) dưới dạng số thập phân.%c
Đại diện ngày và thời gian thích 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. %%
Một ký tự '%' theo nghĩa đen.Một lựa chọn khác:
import datetime
now=datetime.datetime.now()
now.isoformat()
# ouptut --> '2016-03-09T08:18:20.860968'
datetime.datetime.now().ctime()
==>'Wed Sep 4 13:12:39 2019'
Bạn có thể sử dụng các phương thức định dạng chuỗi đơ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'
'{:%Y-%m-%d %H:%M}'.format(datetime(2001, 2, 3, 4, 5))
. Xem thêm tại pyformat.info
type-specific formatting
cũng có thể được sử dụng:
t = datetime.datetime(2012, 2, 23, 0, 0)
"{:%m/%d/%Y}".format(t)
Đầu ra:
'02/23/2012'
Nếu bạn đang tìm kiếm một cách đơn giản datetime
để chuyển đổi chuỗi và có thể bỏ qua định dạng. Bạn có thể chuyển đổi datetime
đối tượng str
và sau đó sử dụng mảng cắt.
In [1]: from datetime import datetime
In [2]: now = datetime.now()
In [3]: str(now)
Out[3]: '2019-04-26 18:03:50.941332'
In [5]: str(now)[:10]
Out[5]: '2019-04-26'
In [6]: str(now)[:19]
Out[6]: '2019-04-26 18:03:50'
Nhưng lưu ý những điều sau đây. Nếu các giải pháp khác sẽ tăng AttributeError
khi biến None
trong trường hợp này, bạn sẽ nhận được một 'None'
chuỗi.
In [9]: str(None)[:19]
Out[9]: 'None'
Có thể chuyển đổi một đối tượng datetime thành một 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 datetime.
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)
Đầu ra -> 23/5/2017
Bạn có thể chuyển đổi datetime thành chuỗi.
published_at = "{}".format(self.published_at)
Nối chuỗi str.join
, có thể được sử dụng để xây dựng chuỗi.
d = datetime.now()
'/'.join(str(x) for x in (d.month, d.day, d.year))
'3/7/2016'
DateTimeField
hoặcDateField
trong django. Cảm ơn