From: Steven Baltakatei Sandoval Date: Tue, 10 Jan 2023 16:12:49 +0000 (+0000) Subject: feat(user/bkdatediff):Add script to calculate timestamp differences X-Git-Tag: 0.7.0~2 X-Git-Url: https://zdv2.bktei.com/gitweb/BK-2020-03.git/commitdiff_plain/cdf058f49da79511145631f9c64e635dce7852a7?hp=68e86d2510e563f5deb8e71c274584dd92360d46 feat(user/bkdatediff):Add script to calculate timestamp differences - Note: Uses GNU date --- diff --git a/user/bkdatediff b/user/bkdatediff new file mode 100644 index 0000000..8a669ab --- /dev/null +++ b/user/bkdatediff @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +# Desc: Get time difference two between date-parsable strings in seconds +# Usage: bkdatediff [STRING] [STRING] +# Example: bkdatediff "2023-01-10T08:36:42+00" "2023-01-10T12:30:13+00" +# Version 0.0.1 + +yell() { echo "$0: $*" >&2; } # print script path and all args to stderr +die() { yell "$*"; exit 111; } # same as yell() but non-zero exit status +must() { "$@" || die "cannot $*"; } # runs args as command, reports args if command fails +check_depends() { + if ! command -v date 1>/dev/random 2>&1; then die "FATAL:Missing:date"; fi; + return 0; +}; # check dependencies +show_usage() { + cat <<'EOF' + USAGE: + bkdatediff [STRING1] [STRING2] + + STRING1, STRING2 + `date` parsable strings. (i.e. variable STR in `date --date='$STR'`) + + EXAMPLE: + bkdatediff "2023-01-10T08:36:42+00" "2023-01-10T12:30:13+00" +EOF +}; +main() { + local t1 t2; + check_depends; + # check args + if [[ ! $# -eq 2 ]]; then show_usage; die "FATAL:Wrong number of args:$#"; fi; + + # get unix epoch + t1="$(must date --date="$1" +%s)"; + t2="$(must date --date="$2" +%s)"; + + # print diff in seconds + printf "%s\n" "$((t2 - t1))"; +}; # main program + +main "$@";