Commit | Line | Data |
---|---|---|
b8567b73 SBS |
1 | #!/bin/bash |
2 | # Desc: Prints a list of galactic tick dates | |
3 | # Usage: ./calcGalTick.sh [int start] [int end] | |
4 | # Input: arg1: int start index | |
5 | # arg2: int end index | |
6 | # Example: ./calcGalTick.sh 0 250 | |
7 | # Depends: bc 1.07.1; date (GNU coreutils) 8.32 | |
ad02ceef | 8 | # Version: 0.0.2 |
b8567b73 SBS |
9 | # Ref/Attrib: [1] Galactic Tick Day Calendar. (2021-10-20). https://github.com/GalacticTick/GalacticTick.github.io/blob/master/documents/press-3.pdf |
10 | ||
11 | # Galactic Tick duration equation (seconds) | |
12 | ## (Earth years per galactic turn) / (100ths of arcseconds per turn) * (solar days in Earth year) | |
13 | sGalTickEq="(225 * 10^6) / (1296000 * 100) * (365.25) * (24*3600)"; | |
14 | #sGalTickEq="(225 * 10^6) / (1296000 * 100) * (365.24217) * (24*3600)"; | |
15 | ||
16 | # Galactic tick duration (seconds) | |
17 | sGalTick="$(echo "$sGalTickEq" | bc -l)"; # 54788453.99999999999996457600 | |
18 | #sGalTick="$(printf "%.0f" "$sGalTick")"; # round to int | |
19 | ||
20 | # Unix epoch of first tick (seconds; date Hans Lippershey patented the first telescope) | |
21 | ueFirstTick="$(date --date="1608-10-02" +%s)"; | |
22 | ||
23 | yell() { echo "$0: $*" >&2; } # print script path and all args to stderr | |
24 | die() { yell "$*"; exit 111; } # same as yell() but non-zero exit status | |
25 | must() { "$@" || die "cannot $*"; } # runs args as command, reports args if command fails | |
26 | printGalTickDate() { | |
27 | # Usage: printGalTickDate [int] | |
28 | # Input: arg1: nthGalTick int n'th observance since frist Galactic Tick | |
29 | # var: sGalTick: int Galactic tick duration | |
30 | # var: ueFirstTick: int Unix epoch of first tick | |
31 | # Output: str: ISO-8601 date string | |
32 | # Example: printGalTickDate 239 | |
33 | # 2023-09-09 | |
34 | # Depends: bc 1.07.1; date (GNU coreutils) 8.32 | |
35 | # Version: 0.0.1 | |
36 | local nthGalTick output; | |
37 | ||
38 | # Calc Unix epoch of n'th observance since first Galactic Tick | |
39 | ## 0th tick was first tick | |
40 | nthGalTick="$1"; | |
41 | ueTickEq="( $ueFirstTick + ( ($nthGalTick - 0) * $sGalTick ) )"; | |
42 | ueTick="$( echo "$ueTickEq" | bc -l )"; | |
43 | ||
44 | # Print calendar date | |
ad02ceef SBS |
45 | #output="$(TZ=UTC date --date="@$ueTick" +%Y-%m-%dT%H:%M:%S%z)"; |
46 | output="$(TZ=UTC date --date="@$ueTick" +%Y-%m-%d)"; | |
b8567b73 SBS |
47 | |
48 | printf "%s\n" "$output"; | |
49 | }; # print ISO-8601 calendar date of tick | |
50 | main() { | |
51 | start="$1"; | |
52 | end="$2"; | |
53 | for ((tick="$start"; tick<="$end"; tick++)); do | |
54 | printf "%03d: " "$tick"; # observance number | |
55 | printGalTickDate "$tick"; # date | |
56 | done; | |
57 | }; # main program | |
58 | ||
59 | main "$@"; | |
60 | ||
61 | # Author: Steven Baltakatei Sandoval | |
62 | # License: GPLv3+ |