簡體   English   中英

在幾個月內找出 2 個字符串之間的差異

[英]Find difference between 2 strings in months

我正在嘗試解決一個問題,我需要找到 2 個字符串之間的月數差異

"January 2022"

"July 2022"

Answer=7

我查看了整個 inte.net 以找到答案但無法找到答案,主要是回答使用的日期時間庫

還有其他方法可以解決這個問題嗎?

我試圖像這樣創建一個 static 字典,但無法繼續

m={
        1: "January",
        2: "February",
        3: "March",
        4: "April",
        5: "May",
        6: "June",
        7: "July",
        8: "August",
        9: "September",
        10: "October",
        11: "November",
        12: "December"
    }

起初我嘗試使用datetime時間模塊,但后來發現更簡單的方法。

  1. 您反轉字典以將月份轉換為月份 ID
  2. 通過乘以 12 將年份轉換為月份。
month_ids = dict({
    "January":1,
    "February":2,
    "March":3,
    "April":4,
    "May":5,
    "June":6,
    "July":7,
    "August":8,
    "September":9,
    "October":10,
    "November":11,
    "December":12
    })

def to_months(month_year):
  month_name, year = month_year.strip().split()
  return (int(year) * 12) + month_ids[month_name.strip()]

print(to_months("July 2022") - to_months("January 2022"))

注意:根據上述邏輯,7 月/1 月的黑白差異為 6,因為此代碼不包括上個月。 根據您的需要,您可以在需要時包括 +1。

使用dateutil

from dateutil import parser, relativedelta

def delta_months(a, b):
    """ returns negative delta if b > a """
    a = parser.parse(a)
    b = parser.parse(b)
    delta = relativedelta.relativedelta(a, b)
    delta = delta.years * 12 + delta.months
    return delta

a = 'January 2022'
b = 'March 2022'
print(delta_months(a, b)) # -2
print(delta_months(b, a)) # 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM