Như Niklas đã nhận xét, vì tháng khác nhau về độ dài, một tháng kể từ hôm nay có thể khá mơ hồ.
Mọi ngành đều có một số loại quy ước; kết quả có thể khác nhau tùy thuộc vào mục tiêu của bạn. Ví dụ, nó sẽ được sử dụng để tính toán lãi suất? nó sẽ được sử dụng để tạo ra các hóa đơn tái phát?
Nếu bạn muốn 30 ngày kể từ ngày hôm nay:
>>> import datetime
>>> d1 = datetime.date.today()
>>> d1
datetime.date(2012, 3, 8)
>>> d1 + datetime.timedelta(30)
datetime.date(2012, 4, 7)
Có thể không được những gì bạn muốn nếu tháng có 31 ngày:
>>> d2 = datetime.date(2012, 1, 1)
>>> d2 + datetime.timedelta(30)
datetime.date(2012, 1, 31)
>>> import calendar
>>> calendar.monthrange(2012, 1)
(6, 31)
>>> d2 + datetime.timedelta(calendar.monthrange(d2.year, d2.month)[1])
datetime.date(2012, 2, 1)
Tuy nhiên, có thể không phải là kết quả mà bạn mong đợi nếu vào tháng tới có ít hơn 30 ngày:
>>> d3 = datetime.date(2012, 1, 31)
>>> d3 + datetime.timedelta(calendar.monthrange(d3.year, d3.month)[1])
datetime.date(2012, 3, 2)
>>> import dateutil
>>> d3 + dateutil.relativedelta.relativedelta(months=1)
datetime.date(2012, 2, 29)
trong mẫu hoặc trong python? – jterrace
trong python nhưng tôi sẽ được đánh giá cao nếu bạn giải thích cả hai –
1 tháng là + 30 ngày hoặc là 1 tháng là linh hoạt? –