Advertisement
goebelmasse

Differenz in Tagen zwischen zwei Datumsangaben ermitteln.

Jun 10th, 2018
776
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.32 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # $Id: datediff,v 1.3 2013/09/14 14:37:31 elias Exp $
  3.  
  4. from datetime import date
  5. from re import match
  6. from sys import argv
  7.  
  8. opt_year_real = False
  9. opt_short_output = False
  10.  
  11. def twodigityear(y):
  12.     if y > 100 or opt_year_real:
  13.         return y
  14.     if y > 70:
  15.         y += 1900
  16.     else:
  17.         y += 2000
  18.     return y
  19.  
  20. def s2date(s):
  21.     mo = match(r'(\d{,2})\.(\d{,2})\.(\d+)$', s)
  22.     if mo:
  23.         year = twodigityear(int(mo.group(3)))
  24.         return date(year, int(mo.group(2)), int(mo.group(1)))
  25.     mo = match(r'(\d+)\-(\d{,2})\-(\d{,2})$', s)
  26.     if mo:
  27.         year = twodigityear(int(mo.group(1)))
  28.         return date(year, int(mo.group(2)), int(mo.group(3)))
  29.     raise RuntimeError, 'Unsupported date format'
  30.  
  31. argc = len(argv)
  32. if argc == 2:
  33.     d1 = date.today()
  34.     d2 = s2date(argv[1])
  35. elif argc == 3:
  36.     d1 = s2date(argv[1])
  37.     d2 = s2date(argv[2])
  38. else:
  39.     raise RuntimeError, 'Improper parameters'
  40.  
  41. dd = d2 - d1
  42. days = dd.days
  43. if opt_short_output:
  44.     print(days)
  45. else:
  46.     direction = 'after'
  47.     ds1 = d1.isoformat()
  48.     ds2 = d2.isoformat()
  49.     if days < 0:
  50.         direction = 'before'
  51.         days = abs(days)
  52.     if days > 1:
  53.         plural = 'days'
  54.     else:
  55.         plural = 'day'
  56.     print('%s is %d %s %s %s' % (ds2, days, plural, direction, ds1))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement