#include <stdio.h>
#include <time.h>

struct tm makeDate(int day, int month, int year)
{
  struct tm ttm = { 0 };
  ttm.tm_mday = day;
  ttm.tm_mon = month - 1;
  ttm.tm_year = year - 1900;
  return ttm;
}

int main()
{
  struct tm date,
    startDate = makeDate(1, 1, 2016),
    endDate = makeDate(31, 12, 2016);
  time_t end = mktime(&endDate);

#ifdef __int64
#else
  extern char *tzname[2];
  extern long timezone;
  extern int daylight;
  putenv("TZ=CET-1CEST,M3.5.0/2,M10.5.0/3");
#endif
  tzset(); printf("%d %ld %s %s\n", daylight, timezone, tzname[0], tzname[1]);
  for (date = startDate; end >= mktime(&date); ++date.tm_mday)
  {
    printf("%d %s", date.tm_isdst, asctime(&date));
  }

  putenv("TZ=EST5EDT,M3.2.0/2,M11.1.0");
  tzset(); printf("%d %ld %s %s\n", daylight, timezone, tzname[0], tzname[1]);
  for (date = startDate; end >= mktime(&date); ++date.tm_mday)
  {
    printf("%d %s", date.tm_isdst, asctime(&date));
  }

  return 0;
}
