Tôi biết sử dụng datetime.timedelta Tôi có thể nhận được ngày của một số ngày đi biểu mẫu được đưa ra
daysafter = datetime.date.today[] + datetime.timedelta[days=5]
Nhưng dường như không có
import datetime
from dateutil import relativedelta
nextmonth = datetime.date.today[] + relativedelta.relativedelta[months=1]
5
Nhà vật lý điên
101K24 Huy hiệu vàng164 Huy hiệu bạc248 Huy hiệu đồng24 gold badges164 silver badges248 bronze badges
hỏi ngày 12 tháng 2 năm 2010 lúc 5:59Feb 12, 2010 at 5:59
Sử dụng mô -đun
import datetime
from dateutil import relativedelta
nextmonth = datetime.date.today[] + relativedelta.relativedelta[months=1]
6. Nó có thời gian tương đối Deltas:import datetime
from dateutil import relativedelta
nextmonth = datetime.date.today[] + relativedelta.relativedelta[months=1]
Beautiful.
Đã trả lời ngày 12 tháng 2 năm 2010 lúc 10:48Feb 12, 2010 at 10:48
Nosklonosklonosklo
209K55 Huy hiệu vàng290 Huy hiệu bạc296 Huy hiệu Đồng55 gold badges290 silver badges296 bronze badges
7
Tất nhiên không - nếu hôm nay ngày 31 tháng 1, thì "cùng ngày của tháng tiếp theo" là gì ?! Rõ ràng là không có giải pháp đúng đắn, vì ngày 31 tháng 2 không tồn tại và mô-đun
import datetime
from dateutil import relativedelta
nextmonth = datetime.date.today[] + relativedelta.relativedelta[months=1]
7 không phát vào "Đoán xem người dùng đặt ra vấn đề không thể này mà không có giải pháp đúng đắn nghĩ [sai] là giải pháp rõ ràng" ;-].not play at "guess what the user posing this impossible problem
without a right solution thinks [wrongly] is the obvious solution";-].Tôi đề nghị:
try:
nextmonthdate = x.replace[month=x.month+1]
except ValueError:
if x.month == 12:
nextmonthdate = x.replace[year=x.year+1, month=1]
else:
# next month is too short to have "same date"
# pick your own heuristic, or re-raise the exception:
raise
Đã trả lời ngày 12 tháng 2 năm 2010 lúc 6:12Feb 12, 2010 at 6:12
Alex Martellialex MartelliAlex Martelli
825K163 Huy hiệu vàng1203 Huy hiệu bạc1381 Huy hiệu Đồng163 gold badges1203 silver badges1381 bronze badges
1
Bạn có thể sử dụng
import datetime
from dateutil import relativedelta
nextmonth = datetime.date.today[] + relativedelta.relativedelta[months=1]
8 [từ Python 3.7].>>> import calendar
>>> calendar.nextmonth[year=2019, month=6]
[2019, 7]
>>> calendar.nextmonth[year=2019, month=12]
[2020, 1]
Nhưng hãy lưu ý rằng chức năng này không có nghĩa là API công khai, nó được sử dụng bên trong phương thức Lịch.Calendar.itermonthDays3 []. Đó là lý do tại sao nó không kiểm tra giá trị tháng đã cho:
>>> calendar.nextmonth[year=2019, month=60]
[2019, 61]
Trong Python 3.8 đã được triển khai dưới dạng chức năng nội bộ.
Đã trả lời ngày 21 tháng 6 năm 2019 lúc 3:30Jun 21, 2019 at 3:30
icoxfog417icoxfog417icoxfog417
1391 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 bronze badges
1
from calendar import mdays
from datetime import datetime, timedelta
today = datetime.now[]
next_month_of_today = today + timedelta[mdays[today.month]]
Tôi không muốn nhập DateUtil. Hãy thử điều này. Chúc may mắn.
Đã trả lời ngày 3 tháng 9 năm 2010 lúc 9:02Sep 3, 2010 at 9:02
Zeronezeronezerone
771 Huy hiệu bạc2 Huy hiệu đồng1 silver badge2 bronze badges
2
import calendar, datetime
def next_month [ date ]:
"""return a date one month in advance of 'date'.
If the next month has fewer days then the current date's month, this will return an
early date in the following month."""
return date + datetime.timedelta[days=calendar.monthrange[date.year,date.month][1]]
Đã trả lời ngày 16 tháng 5 năm 2012 lúc 20:59May 16, 2012 at 20:59
Ch'marrCh'marrCh'marr
1.24411 Huy hiệu bạc8 Huy hiệu đồng11 silver badges8 bronze badges
1
Công việc này cho tôi
import datetime
import calendar
def next_month_date[d]:
_year = d.year+[d.month//12]
_month = 1 if [d.month//12] else d.month + 1
next_month_len = calendar.monthrange[_year,_month][1]
next_month = d
if d.day > next_month_len:
next_month = next_month.replace[day=next_month_len]
next_month = next_month.replace[year=_year, month=_month]
return next_month
usage:
d = datetime.datetime.today[]
print next_month_date[d]
Đã trả lời ngày 29 tháng 6 năm 2016 lúc 3:20Jun 29, 2016 at 3:20
DaoctordaoctorDaoctor
3523 Huy hiệu bạc7 Huy hiệu Đồng3 silver badges7 bronze badges
Đây là cách tôi giải quyết nó.
from datetime import datetime, timedelta
from calendar import monthrange
today_date = datetime.now[].date[] # 2021-10-29
year = today_date.year
month = today_date.month
days_in_month = monthrange[year, month][1]
next_month = today_date + timedelta[days=days_in_month]
print[next_month] # 2021-11-29
Đã trả lời ngày 29 tháng 10 năm 2021 lúc 14:50Oct 29, 2021 at 14:50
Giải pháp trên Python3 mà không có các mô -đun bổ sung cũng như các chức năng nội bộ.
import datetime
from dateutil import relativedelta
nextmonth = datetime.date.today[] + relativedelta.relativedelta[months=1]
0Hurray cho số nguyên đại số!
Đã trả lời ngày 12 tháng 1 lúc 21:47Jan 12 at 21:47
1
import datetime
from dateutil import relativedelta
nextmonth = datetime.date.today[] + relativedelta.relativedelta[months=1]
1Đã trả lời ngày 3 tháng 5 năm 2014 lúc 16:56May 3, 2014 at 16:56
Collin Andersoncollin AndersonCollin Anderson
Phù bằng vàng 14K6 62 Huy hiệu bạc55 Huy hiệu đồng6 gold badges62 silver badges55 bronze badges
0
Đây là cách tôi giải quyết nó.
import datetime
from dateutil import relativedelta
nextmonth = datetime.date.today[] + relativedelta.relativedelta[months=1]
2Đã trả lời ngày 29 tháng 10 năm 2021 lúc 14:50
Giải pháp trên Python3 mà không có các mô -đun bổ sung cũng như các chức năng nội bộ.Jul 9, 2014 at 13:07
Hurray cho số nguyên đại số!
import datetime
from dateutil import relativedelta
nextmonth = datetime.date.today[] + relativedelta.relativedelta[months=1]
3Đã trả lời ngày 12 tháng 1 lúc 21:47Mar 28, 2018 at 22:05
Đã trả lời ngày 3 tháng 5 năm 2014 lúc 16:56Jolbas
Collin Andersoncollin Anderson5 silver badges15 bronze badges
Phù bằng vàng 14K6 62 Huy hiệu bạc55 Huy hiệu đồng
import datetime
from dateutil import relativedelta
nextmonth = datetime.date.today[] + relativedelta.relativedelta[months=1]
4Bạn có thể bỏ qua thử/bắt nếu bạn chỉ muốn vào ngày đầu tiên trong tháng tới bằng cách đặt
import datetime
from dateutil import relativedelta
nextmonth = datetime.date.today[] + relativedelta.relativedelta[months=1]
9. Đây sẽ luôn là một ngày hợp lệ vì chúng tôi đã bắt được tràn tháng bằng cách sử dụng try:
nextmonthdate = x.replace[month=x.month+1]
except ValueError:
if x.month == 12:
nextmonthdate = x.replace[year=x.year+1, month=1]
else:
# next month is too short to have "same date"
# pick your own heuristic, or re-raise the exception:
raise
0.May 30 at 9:24
1