[解決済み] 前月の日時オブジェクトを返す
2022-07-09 16:28:02
質問
timedeltaのコンストラクタに月の引数があればいいのですが。 そこで、一番簡単な方法は何でしょうか?
EDITです。 下で指摘されているように、私はこれについてあまり深く考えていませんでした。 最終的には年と月だけを取得するつもりなので、本当に私が欲しかったのは先月の任意の日です。 では、datetime オブジェクトがある場合、最も簡単な方法は何でしょうか。 前月に当たる任意のdatetimeオブジェクト ?
どのように解決するのですか?
これを試してみてください。
def monthdelta(date, delta):
m, y = (date.month+delta) % 12, date.year + ((date.month)+delta-1) // 12
if not m: m = 12
d = min(date.day, [31,
29 if y%4==0 and (not y%100==0 or y%400 == 0) else 28,
31,30,31,30,31,31,30,31,30,31][m-1])
return date.replace(day=d,month=m, year=y)
>>> for m in range(-12, 12):
print(monthdelta(datetime.now(), m))
2009-08-06 16:12:27.823000
2009-09-06 16:12:27.855000
2009-10-06 16:12:27.870000
2009-11-06 16:12:27.870000
2009-12-06 16:12:27.870000
2010-01-06 16:12:27.870000
2010-02-06 16:12:27.870000
2010-03-06 16:12:27.886000
2010-04-06 16:12:27.886000
2010-05-06 16:12:27.886000
2010-06-06 16:12:27.886000
2010-07-06 16:12:27.886000
2010-08-06 16:12:27.901000
2010-09-06 16:12:27.901000
2010-10-06 16:12:27.901000
2010-11-06 16:12:27.901000
2010-12-06 16:12:27.901000
2011-01-06 16:12:27.917000
2011-02-06 16:12:27.917000
2011-03-06 16:12:27.917000
2011-04-06 16:12:27.917000
2011-05-06 16:12:27.917000
2011-06-06 16:12:27.933000
2011-07-06 16:12:27.933000
>>> monthdelta(datetime(2010,3,30), -1)
datetime.datetime(2010, 2, 28, 0, 0)
>>> monthdelta(datetime(2008,3,30), -1)
datetime.datetime(2008, 2, 29, 0, 0)
編集 日にも対応するように修正しました。
Edit
のより簡単な計算を指摘した puzzlement の回答も参照してください。
d
:
d = min(date.day, calendar.monthrange(y, m)[1])
関連
-
[解決済み] Pythonでオブジェクトが属性を持つかどうかを知る方法
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] オブジェクトの種類を決定しますか?
-
[解決済み] Pythonで日付をdatetimeに変換する
-
[解決済み] 月の最終日を知るには?
-
[解決済み】文字列をdatetimeに変換する
-
[解決済み】JavaのDateから年、月、日などを取得し、グレゴリオ暦の日付と比較したい。これは可能ですか?
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] re.sub置換パターンにおけるキャプチャグループの後方参照への対応
-
[解決済み] Pythonでファイルがバイナリ(非テキスト)かどうかを検出するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 月の最終日を知るには?
-
[解決済み] 前月末日
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] Pythonで文字列が数字で始まるかどうかを判断するには?
-
[解決済み] pathlib.Pathオブジェクトの絶対パスを取得するには?
-
[解決済み] 条件を満たした場合にNumpyの要素を置き換える
-
[解決済み] リストスライスの割り当てはどのように行われるのですか?
-
[解決済み] Seleniumから要素の属性を取得するには?
-
[解決済み] SQLAlchemy が db に送る SQL コマンドのデバッグ(表示)
-
[解決済み] Pandasがラベルで選択すると、Seriesを返す場合とDataFrameを返す場合があります。