python如何比较目标时间与当前时间的月份差值

python如何比较目标时间与当前时间的月份差值,第1张

问题

最近在编写一个脚本,从数据库里找到一个订单的创建时间,然后需要判断当前时间和订单创建的时间间隔几个月。比如订单创建的时间是2021-8-26,现在的时间是2022-03-10,那我想得出的月份差就是6个月

那如何使用python来实现呢?

解决方法 1. 先将目标时间和最近时间都通过年月日的方式取到

因为我使用的是pandas库来读取数据库语句的,那刚好pandas是有方法可以直接读取年月日数据

import pymysql
import pandas as pd

df = pd.read_sql(sql=sql, con=mysql_cn) #通过sql读取需要的数据
already_revenue_time = df.trade_start_time.values[0]  #将该订单创建时间取出,但是年月日+0000的样式
trade_start_time =pd.to_datetime(already_revenue_time).date() #只保留年月日样式,输出为2021-08-26
2. 找到当前时间

通过datatime库自带的方法,即可以拿到当天日期的年月日时间

import datetime
current_time = datetime.date.today() #当前时间,输出数据为2022-03-10
3.月份相差比较函数

自定义一个计算月份差值的函数

def months(str1,str2):
    #比较目标时间和当前时间相差几个月的函数
    year1=str1.year
    year2=str2.year
    month1=str1.month
    month2=str2.month
    #比如2021-8-26 和2022-3-10,只相差了6个月,没有到7个月,所以我做了一下日数据的判定,保证得到的月份更加精准
    if str1.day >= str2.day:
        num=(year1-year2)*12+(month1-month2)
    else:
        num =(year1-year2)*12 + (month1-month2)-1
    return num
4. 函数调用
if __name__ == "__main__":
    month_difference =months(current_time,trade_start_time) 
    print(month_difference)  #输出的结果是6
5. 完整代码(因sql是公司语句,不方便公开,大家可对照自家公司业务进行修改,学习方法就行)
import pymysql
import pandas as pd
import datetime

def months(str1,str2):
    #比较目标时间和当前时间相差几个月的函数
    year1=str1.year
    year2=str2.year
    month1=str1.month
    month2=str2.month
    #比如2021-8-26 和2022-3-10,只相差了6个月,没有到7个月,所以我做了一下日数据的判定,保证得到的月份更加精准
    if str1.day >= str2.day:
        num=(year1-year2)*12+(month1-month2)
    else:
        num =(year1-year2)*12 + (month1-month2)-1
    return num

def get_data():
    df = pd.read_sql(sql=sql, con=mysql_cn) #通过sql读取需要的数据
    already_revenue_time = df.trade_start_time.values[0]  #将该订单创建时间取出,但是年月日+0000的样式
    trade_start_time =pd.to_datetime(already_revenue_time).date() #只保留年月日样式,输出为2021-08-26
    current_time = datetime.date.today() #当前时间,输出数据为2022-03-10
    month_difference =months(current_time,trade_start_time)  #输出的结果是6
    
if __name__ == "__main__":
    print(f"月份相差:{get_data()}个月")

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/726360.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存