Hemanth's Scribes
linux

Time Zone Conversions

Author Photo

Hemanth HM

· 3 min read · .md

“Time is constant, we come and go”, but the beauty of earth is so, that time varies with space.

I made a simple BASH script to convert between different time zones, as i badly needed one such app, that would give me time in my terminal.

The script majors play with the GNU date utility. date - print or set the system date and time and -d or —date option take a date string to display the current date based on the string.

The script:

#!/usr/bin/bash
# Author  : hemanth hemanth.hm@gmail.com
# License : GNU GPLv3
# Site : www.h3manth.com
# This script converts given / local time to other time zones

# To echo useage
function useage()
{
    echo "USEAGE : $0 [OPTION] <-z GMT,UTC,EDT,CST,MST,PST,IST> HH:MM"
}

function __print__()
{
date -d "$1" &> /dev/null 
if [[ $? == 0 ]];then
echo "Given time ${1:-00:00} in various time zones:"
echo "IST => $(date -d "$1 IST")"
echo "UTC => $(date -d "$1 UTC")"
echo "EST => $(date -d "$1 EST")"
echo "EDT => $(date -d "$1 EDT")"
echo "PST => $(date -d "$1 PST")"
echo "CST => $(date -d "$1 CST")"
echo "MST => $(date -d "$1 MST")"
else
echo invalid date $1 
fi
}

while [[ $1 == -* ]]; do
    case "$1" in
      -h|--help|-\?) useage; exit 0;;
      -z)[[ $# > 2 ]]&& shift && date -d "$*" &>/dev/null; [[ $? == 0 ]] && 
         date -d "$*" || useage ;shift; exit 0 ;;
      --) shift; break;;
      -*) echo "invalid option: $1" 1>&2; useage; exit 1;;
    esac
done
    
if [[ $1 != -* ]]; then
   __print__ $1
fi

Different scenarios :

$ bash tz.bash 
Given time 00:00 in various time zones:
IST => Mon Sep 27 00:00:00 IST 2010
UTC => Mon Sep 27 05:30:00 IST 2010
EST => Mon Sep 27 10:30:00 IST 2010
EDT => Mon Sep 27 09:30:00 IST 2010
PST => Mon Sep 27 13:30:00 IST 2010
CST => Mon Sep 27 11:30:00 IST 2010
MST => Mon Sep 27 12:30:00 IST 2010
$ bash tz.bash -z 10:00 UTC
Mon Sep 27 15:30:00 IST 2010
$ bash tz.bash -z 10:00 EST
Mon Sep 27 20:30:00 IST 2010
$ bash tz.bash -z 10:00 CST
Mon Sep 27 21:30:00 IST 2010
$ bash tz.bash -h
USEAGE : tz.bash [OPTION] <-z GMT,UTC,EDT,CST,MST,PST,IST> HH:MM

Now trying to make similar code with other different programming languages, to compare and contrast, do share your code in your favorite language

Get the source code fromHERE

#bash#linux
Author Photo

About Hemanth HM

Hemanth HM is a Sr. Machine Learning Manager at PayPal, Google Developer Expert, TC39 delegate, FOSS advocate, and community leader with a passion for programming, AI, and open-source contributions.

100%