【问题标题】:Time residual function in PythonPython中的时间残差函数
【发布时间】:2020-06-07 02:39:33
【问题描述】:

我在数据库中有 2 个字段:confirmed_atpreparation_time

我想要两个应该返回的简单函数:

  • (a) 剩余时间 和
  • (b) 剩余时间百分比。

这是我想要实现的逻辑:

  • 当订单为confirmed_at 时,我使用datetime.now() 更新数据库,preparation_time 以分钟为单位并存储为integer(例如,5 分钟存储为 5)

    李>
  • completed_timeconfirmed_at + preparation_time

  • time_remainingcompleted_time - now()

  • order statuscompleted_time / now() * 100

这些是我的功能,但我无法让它们工作:

def get_remaining_time(self):

    start_time = datetime(self.confirmed_at)

    end_time = (start_time + datetime.timedelta(0,self.preparation_time*60)).time() # days, seconds.

    return  end_time - datetime.now()

def get_order_status(self):
    end_time = (datetime(self.confirmed_at) + datetime.timedelta(0,self.preparation_time*60)).time()

    return end_time / datetime.now() * 100

【问题讨论】:

    标签: python django time


    【解决方案1】:

    函数返回什么样的类型?如果是 timedelta - 只需将其转换为日期即可。

    【讨论】:

      【解决方案2】:

      所以这是我设法解决的解决方案

      def get_remaining_time(self):
      
          start_time = self.confirmed_at
      
          end_time = start_time + timedelta(
              0, self.preparation_time * 60
          )  # days, seconds.
      
          return end_time - timezone.now()
      
      def get_time_left(self):
          left = self.get_remaining_time()
      
          sec = int(left.total_seconds())
          if sec > 60:
              return "{} minutes".format(int(sec / 60))
          elif sec < 60 and sec > 0:
              return "{} seconds".format(sec)
          else:
              return 0
      
      def get_order_status(self):
      
          left = int(self.get_remaining_time().total_seconds())
          if left < 0:
              return 100
          else:
              return round((1 - left / (self.preparation_time * 60)) * 100)
      

      【讨论】:

        猜你喜欢
        • 2020-10-22
        • 1970-01-01
        • 2021-06-04
        • 1970-01-01
        • 1970-01-01
        • 2019-03-23
        • 2016-05-26
        • 2021-03-04
        • 1970-01-01
        相关资源
        最近更新 更多