【问题标题】:I'm unsure of how to subtract dates [duplicate]我不确定如何减去日期[重复]
【发布时间】:2019-01-02 20:36:21
【问题描述】:

所以在我的项目中,我正在尝试计算股票交易,其中一个字段要求我减去日期 04/15/2018(购买日期) 04/27/2018(销售日期)但是,我不是确定如何进行减法。

我尝试过像 04/15/2018-04/27/2018 这样的减法,但由于这在逻辑上没有意义,所以我不确定该怎么做。

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    把它们变成日期然后你可以简单地减去,见datetime.datetime.strptime(),例如:

    In []:
    from datetime import datetime
    d1 = datetime.strptime('04/15/2018', '%m/%d/%Y')
    d2 = datetime.strptime('04/27/2018', '%m/%d/%Y')
    d1 - d2
    
    Out[]:
    datetime.timedelta(days=-12)`
    

    【讨论】:

      【解决方案2】:

      您需要更深入地了解标准库中的datetime 包。另一个有用的包是dateutil,它有一些更高级的解析功能。

      你可以这样做

      start_date = "04/15/2018"  # note that this is a string
      end_date = "04/27/2018"
      
      from dateutil.parser import parse
      start_dt = parse(start_date)
      end_dt = parse(end_date)
      
      time_delta = end_dt - start_dt
      
      # get the time between the two dates in different units
      days_between_dates = time_delta.days
      seconds_between_dates = time_delta.total_seconds()
      

      【讨论】:

        【解决方案3】:

        借用Difference between two dates in Python这个答案datetime.datetime.strptime模块可以做日期计算:

        from datetime import datetime
        
        def days_between(d1, d2):
            d1 = datetime.strptime(d1, '%m/%d/%Y')
            d2 = datetime.strptime(d2, '%m/%d/%Y')
            return abs((d2 - d1).days)  # ensures a positive return value
        
        print(days_between('04/15/2018', '04/27/2018'))
        

        输出:

        12
        

        【讨论】:

          猜你喜欢
          • 2020-06-30
          • 2014-10-01
          • 2011-03-06
          • 1970-01-01
          • 2016-08-31
          • 2015-01-03
          • 2018-10-25
          • 1970-01-01
          相关资源
          最近更新 更多