2012-09-18 38 views
81

tôi đã chuyển đổi thành công một cái gì đó của định dạng 26 Sep 2012-26-09-2012 sử dụng:Python datetime - thiết giờ cố định và phút sau khi sử dụng strptime để có được ngày, tháng, năm

datetime.strptime(request.POST['sample_date'],'%d %b %Y')

Tuy nhiên, tôi không biết làm thế nào để thiết lập giờ và phút của một cái gì đó như trên để 11:59. Có ai biết cách để làm điều này không?

Lưu ý, đây có thể là ngày trong tương lai hoặc bất kỳ ngày tháng ngẫu nhiên nào, không chỉ ngày hiện tại.

Trả lời

202

Sử dụng datetime.replace:

from datetime import datetime 
date = datetime.strptime('26 Sep 2012', '%d %b %Y') 
newdate = date.replace(hour=11, minute=59) 
+6

Vì vậy, tiện dụng, nhưng quá dễ dàng bỏ qua. –

+0

Cảm ơn bạn đã trả lời nhanh! :) Chỉ cần tò mò nếu có một cách để làm điều đó mà không có biến ngày tháng thêm? (Tôi là một newbie python) – user1678031

+1

Có, chỉ cần 'date = datetime.strptime ('26 Sep 2012 ','% d% b% Y ') .thay thế (giờ = 11, phút = 59)'. Tôi đã sử dụng biến phụ để dòng không quá dài :) – nneonneo

8

datetime.replace() sẽ cung cấp các tùy chọn tốt nhất. Ngoài ra, nó cung cấp cơ sở để thay thế ngày, năm và tháng.

Giả sử chúng ta có một đối tượng datetime và ngày được biểu diễn dưới dạng: "2017-05-04"

>>> from datetime import datetime 
>>> date = datetime.strptime('2017-05-04',"%Y-%m-%d") 
>>> print(date) 
2017-05-04 00:00:00 
>>> date = date.replace(minute=59, hour=23, second=59, year=2018, month=6, day=1) 
>>> print(date) 
2018-06-01 23:59:59 
Các vấn đề liên quan