Advertisement
goebelmasse

Osterdatum ermitteln

Nov 25th, 2020
1,273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.16 KB | None | 0 0
  1. #!/bin/sh
  2. # -*- coding: utf-8 -*-
  3. # $Id: ostern,v 1.3 2020/09/21 21:54:14 elias Exp $
  4. ########################################################################
  5. #
  6. # Berechnung des Osterdatums für ein Jahr
  7. # Quelle der Formel:
  8. # https://de.wikipedia.org/wiki/Gau%C3%9Fsche_Osterformel
  9. #
  10. ########################################################################
  11.  
  12. PATH=/bin:/usr/bin
  13.  
  14. case $# in
  15.     0)
  16.     year=`date +%Y`
  17.     ;;
  18.     1)
  19.     year=$1
  20.     ;;
  21.     *)
  22.     echo 1>&2 "Zu viele Parameter."
  23.     exit 1
  24.     ;;
  25. esac
  26.  
  27. case $year in
  28.     -h)
  29.     echo 1>&2 "Benutzung: ostern [-n | jahr]"
  30.     echo 1>&2 "Ohne Jahresangabe wird das aktuelle Jahr genommen"
  31.     echo 1>&2 "Bei -n wird das nächste Jahr genommen"
  32.     exit
  33.     ;;
  34.     -n)
  35.     year=`date +%Y`
  36.     year=`expr $year + 1`
  37.     ;;
  38. esac
  39.  
  40. echo $year | awk '
  41. {
  42.  year = $1
  43.  a = year % 19
  44.  b = year % 4
  45.  c = year % 7
  46.  k = int(year / 100)
  47.  p = int((8 * k + 13) / 25)
  48.  q = int(k / 4)
  49.  m = (15 + k - p - q) % 30
  50.  d = (19 * a + m) % 30
  51.  n = (4 + k - q) % 7
  52.  e = (2 * b + 4 * c + 6 * d + n) % 7
  53.  oday = (22 + d + e)
  54.  omnt = 3
  55.  if (oday > 31) { oday -= 31; omnt += 1 }
  56.  printf("%04d-%02d-%02d\n", year, omnt, oday)
  57. }'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement