Hướng dẫn python get next month - python nhận được vào tháng tới

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]
0

Hurray 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]
4

Bạ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

Bài Viết Liên Quan

Chủ Đề