[解決済み] タイムデルタを年に換算すると?
2022-03-13 23:36:37
質問
ある日付から何年経過しているかを調べたい。現在、私は
timedelta
から
datetime
モジュールで、年単位に変換する方法がわかりません。
どのように解決するのですか?
を超えるものが必要です。
timedelta
何年経ったかを知るには、開始日(または終了日)も知る必要があります。 (うるう年のことです)。
最も良い方法は
dateutil.relativedelta
オブジェクト
が、これはサードパーティーモジュールです。 もし
datetime
あれは
n
ある日付(デフォルトは今)から何年か経っている場合は、次のようになります:。
from dateutil.relativedelta import relativedelta
def yearsago(years, from_date=None):
if from_date is None:
from_date = datetime.now()
return from_date - relativedelta(years=years)
もし、標準ライブラリにこだわりたいのであれば、答えはもう少し複雑になります:。
from datetime import datetime
def yearsago(years, from_date=None):
if from_date is None:
from_date = datetime.now()
try:
return from_date.replace(year=from_date.year - years)
except ValueError:
# Must be 2/29!
assert from_date.month == 2 and from_date.day == 29 # can be removed
return from_date.replace(month=2, day=28,
year=from_date.year-years)
もし今が2/29で、18年前には2/29がなかったとしたら、この関数は2/28を返します。 もし、3/1を返したいなら、最後の
return
文は次のようになります。
return from_date.replace(month=3, day=1,
year=from_date.year-years)
質問では、もともと、ある日付から何年経ったかを知りたいということでしたね。 整数値で知りたいのであれば、1年を365.2425日と仮定して、以下のいずれかの方法で調べます。
yearsago
という関数が定義されています。
def num_years(begin, end=None):
if end is None:
end = datetime.now()
num_years = int((end - begin).days / 365.2425)
if begin > yearsago(num_years, end):
return num_years - 1
else:
return num_years
関連
-
Python jiabaライブラリの使用方法について説明
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] Pandasのカラム名のリネーム
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] インスタンスのクラス名を取得する?
-
[解決済み] JSONデータをファイルに書き込むにはどうしたらいいですか?
-
[解決済み] ローカルディレクトリからrequirements.txtファイルに従ってpipを使用してパッケージをインストールするにはどうすればよいですか?
-
[解決済み] DateTimeとDateTimeOffsetの比較
-
[解決済み】タイムデルタを日、時間、分に変換する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python関数の高度な応用を解説
-
Python カメの描画コマンドとその例
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み] pythonで生年月日から年齢を推定する