#!/usr/bin/perl -w
use strict;
# (C) 2003-2007 Willem Jan Hengeveld <itsme@xs4all.nl>
# Web: http://www.xs4all.nl/~itsme/
#      http://wiki.xda-developers.com/
#
# $Id$
#

use DateTime::TimeZone;
use DateTime;

if (!@ARGV) {
    my $dt= DateTime->now;
    list_zones($dt);
}
else {
    my ($tz, $time);
    for (@ARGV) {
        if (!defined $tz && /[a-z]/i) {
            $tz= $_;
        }
        elsif (!defined $time && /^\d{4}$/) {
            $time= $_;
        }
        elsif (!defined $time && /:/) {
            $time= $_;
        }
        else {
            die "unknown argument: $_\n";
        }
    }
    if ($tz =~ /orkut/i) {
        $tz= "America/Los_Angeles";
    }
    my $dtnow= DateTime->now;
    my $dt;
    if ($time =~ /^(\d\d):?(\d\d)$/) {
        $dt= DateTime->new(
            year=>$dtnow->year,
            month=>$dtnow->month,
            day=>$dtnow->day,
            hour=>$1,
            minute=>$2,
            time_zone=>$tz);
    }
    list_zones($dt);
}

exit(0);
################################################

sub list_zones {
    my $dt= shift;

    my @zones= qw(America/Los_Angeles America/New_York UTC Europe/Amsterdam Asia/Qatar Asia/Tokyo);

    for (@zones) {
        $dt->set_time_zone($_);
        printf("%-35s %s\n",
            $dt->strftime("%Y-%m-%d %H:%M:%S  %Z %z"),
            $dt->time_zone_long_name);
    }
}

