---
title: "Time Zone Conversions"
description: "’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."
url: "https://h3manth.com/scribe/time-zone-conversions/"
canonical_url: "https://h3manth.com/scribe/time-zone-conversions/"
markdown_url: "https://h3manth.com/scribe/blog/time-zone-conversions.md"
publishDate: "2010-09-27T00:00:00.000Z"
author: "Hemanth HM"
category: "linux"
tags: ["bash","linux"]
word_count: 414
reading_time_minutes: 3
x_markdown_tokens: 739
content_signal: "ai-train=yes, search=yes, ai-input=yes"
---

# Time Zone Conversions

> ’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.

**"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 from[HERE](http://github.com/hemanth/futhark/raw/2c6dbe7f48a7062d0d4afdbb23a6ee9a5252cbc6/tz.bash)_
