ztfy/utils/date.py
branchZTK-1.1
changeset 125 dec1ba47922a
parent 68 c37867f75a54
equal deleted inserted replaced
124:953f5b5bddb6 125:dec1ba47922a
   101             return translate(_("%d hours ago")) % hours
   101             return translate(_("%d hours ago")) % hours
   102         elif delta.seconds > 300:
   102         elif delta.seconds > 300:
   103             return translate(_("%d minutes ago")) % int(round(delta.seconds * 1.0 / 60))
   103             return translate(_("%d minutes ago")) % int(round(delta.seconds * 1.0 / 60))
   104         else:
   104         else:
   105             return translate(_("less than 5 minutes ago"))
   105             return translate(_("less than 5 minutes ago"))
       
   106 
       
   107 
       
   108 def getDuration(v1, v2=None):
       
   109     """Get delta between two dates"""
       
   110     if v2 is None:
       
   111         v2 = datetime.utcnow()
       
   112     assert isinstance(v1, datetime) and isinstance(v2, datetime)
       
   113     v1, v2 = min(v1, v2), max(v1, v2)
       
   114     delta = v2 - v1
       
   115     if delta.days > 60:
       
   116         return translate(_("%d months")) % int(round(delta.days * 1.0 / 30))
       
   117     elif delta.days > 10:
       
   118         return translate(_("%d weeks")) % int(round(delta.days * 1.0 / 7))
       
   119     elif delta.days >= 2:
       
   120         return translate(_("%d days")) % delta.days
       
   121     else:
       
   122         hours = int(round(delta.seconds * 1.0 / 3600))
       
   123         if delta.days == 1:
       
   124             return translate(_("%d day and %d hours")) % (delta.days, hours)
       
   125         else:
       
   126             if hours > 2:
       
   127                 return translate(_("%d hours")) % hours
       
   128             else:
       
   129                 minutes = int(round(delta.seconds * 1.0 / 60))
       
   130                 if minutes > 2:
       
   131                     return translate(_("%d minutes")) % minutes
       
   132                 else:
       
   133                     return translate(_("%d seconds")) % delta.seconds