/*
// File: /cmds/std/_zone.c
// Date V1.0: 93-05-23
// Author: Douglas Reay (Pallando @ most muds)
// Mudlib: TMI-2
// NB 1440 = Number of minutes in a day = 60 * 24
*/
#include <mudlib.h>
#include <daemons.h>
inherit DAEMON;
#define SYNTAX "Syntax: zone <zone_wanted> <time_got> <zone_got>\n"
int cmd_zone( mixed a )
{
string zone_want, zone_got, time_want, time_got;
int o_want, o_got; // time zone offsets (in seconds)
int hours, minutes;
notify_fail( SYNTAX );
if( !a ) return 0;
if( sscanf( a, "%s %s %s", zone_want, time_got, zone_got ) < 3 ) return 0;
if( !( o_got = TIME_D-> query_tzone( zone_got ) ) )
{
notify_fail( zone_got + " is not a time zone I recognise.\n" );
return 0;
}
if( !( o_want = TIME_D-> query_tzone( zone_want ) ) )
{
notify_fail( zone_want + " is not a time zone I recognise.\n" );
return 0;
}
if( sscanf( time_got, "%d:%d", hours, minutes ) < 2 )
{
notify_fail( time_got + " is not in the form \"<hours>:<minutes>\".\n" );
return 0;
}
minutes += ( 60 * hours );
minutes += ( o_want - o_got ) / 60;
minutes += 1440;
minutes = ( minutes % 1440 );
hours = minutes;
minutes = ( minutes % 60 );
hours -= minutes;
hours = hours / 60;
time_want = ( ( hours < 10 ) ? ( "0" + hours ) : ( "" + hours ) );
time_want += ( ( minutes < 10 ) ? ( ":0" + minutes ) : ( ":" +minutes ) );
write( time_got + " " + zone_got + " == " +
time_want + " " + zone_want + "\n" );
return 1;
}
int help()
{
write( SYNTAX + @HelpText
Effect: Converts <time_got> in time zone <zone_got> to time in <zone_wanted>
Example: zone GMT 23:10 PST would convert 11:10pm Pacific Standard Time
into the equivalent Greenwich Mean Time time.
Recognised abbreviations are:
HelpText
);
TIME_D-> show_tzone_list();
return 1;
}
/* EOF */