
#include <time.h>

int
main ()
{
  struct tm tmp_tm;
  time_t t;

  /* Set the time to 11 Apr 1992 18:30:00 (UTC). */
  tmp_tm.tm_year  = 92;
  tmp_tm.tm_mon   = 3;
  tmp_tm.tm_mday  = 11;
  tmp_tm.tm_hour  = 18;
  tmp_tm.tm_min   = 30;
  tmp_tm.tm_sec   = 00;
  tmp_tm.tm_isdst = 0;

  /* Turn it into a time_t. */
  putenv ("TZ=UTC");
  t = mktime (&tmp_tm);

  /* Print it out as a UTC time. */
  printf ("UTC Time          : %s", ctime (&t));

  /* Now print it out in local time in Asia/Bishkek timezone. */
  putenv ("TZ=Asia/Bishkek");
  printf ("Asia/Bishkek Time : %s", ctime (&t));


  /* That outputs "Sun Apr 12 00:30:00 1992", which I don't think is a valid
     time in Asia/Bishkek, since the clock goes forward at 00:00 1 hour.

     The relevant Zone line (the last line in the zone) is:

     # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
				5:00	Kirgiz	KG%sT		    # Kirgizstan Time

     The relevant Rule line is:				

     # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
     Rule	Kirgiz	1992	1996	-	Apr	Sun>=7	0:00	1:00	S

     So on 'Sun>=7 Apr 1992' (12 Apr 1992) at 0:00 local time clocks go forward
     1 hour. Therefore local times between 0:00 and 1:00 should not exist.

  */
}
