#include <iostream>
#include <iomanip>
#include <ctime>
#include <stdlib.h>
#include <limits>
int main()
{
setenv("TZ", "/usr/share/zoneinfo/America/New_York", 1); // POSIX-specific
std::time_t t = std::time(nullptr);
std::tm tm = *std::localtime(&t);
std::cout << "Today is " << std::put_time(&tm, "%c %Z")
<< " and DST is " << (tm.tm_isdst ? "in effect" : "not in effect") << '\n';
tm.tm_year = 550;
tm.tm_year = std::numeric_limits< decltype( tm.tm_year ) >::max();
tm.tm_mon = 88;
tm.tm_mday = 200;
//tm.tm_mon -= 100; // tm_mon is now outside its normal range
auto err = std::mktime(&tm); // tm_dst is not set to -1; today's DST status is used
std::cout << "100 months ago was " << std::put_time(&tm, "%c %Z")
<< " and DST was " << (tm.tm_isdst ? "in effect" : "not in effect") << '\n';
std::cout << err << "\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGN0aW1lPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxsaW1pdHM+CgppbnQgbWFpbigpCnsKICAgIHNldGVudigiVFoiLCAiL3Vzci9zaGFyZS96b25laW5mby9BbWVyaWNhL05ld19Zb3JrIiwgMSk7IC8vIFBPU0lYLXNwZWNpZmljCgogICAgc3RkOjp0aW1lX3QgdCA9IHN0ZDo6dGltZShudWxscHRyKTsKICAgIHN0ZDo6dG0gdG0gPSAqc3RkOjpsb2NhbHRpbWUoJnQpOwogICAgc3RkOjpjb3V0IDw8ICJUb2RheSBpcyAgICAgICAgICAgIiA8PCBzdGQ6OnB1dF90aW1lKCZ0bSwgIiVjICVaIikKICAgICAgICAgICAgICA8PCAiIGFuZCBEU1QgaXMgIiA8PCAodG0udG1faXNkc3QgPyAiaW4gZWZmZWN0IiA6ICJub3QgaW4gZWZmZWN0IikgPDwgJ1xuJzsKICAgIHRtLnRtX3llYXIgPSA1NTA7CiAgICB0bS50bV95ZWFyID0gc3RkOjpudW1lcmljX2xpbWl0czwgZGVjbHR5cGUoIHRtLnRtX3llYXIgKSA+OjptYXgoKTsKICAgIHRtLnRtX21vbiA9IDg4OwogICAgdG0udG1fbWRheSA9IDIwMDsKICAgIC8vdG0udG1fbW9uIC09IDEwMDsgIC8vIHRtX21vbiBpcyBub3cgb3V0c2lkZSBpdHMgbm9ybWFsIHJhbmdlCiAgICBhdXRvIGVyciA9IHN0ZDo6bWt0aW1lKCZ0bSk7ICAvLyB0bV9kc3QgaXMgbm90IHNldCB0byAtMTsgdG9kYXkncyBEU1Qgc3RhdHVzIGlzIHVzZWQKICAgIHN0ZDo6Y291dCA8PCAiMTAwIG1vbnRocyBhZ28gd2FzICIgPDwgc3RkOjpwdXRfdGltZSgmdG0sICIlYyAlWiIpCiAgICAgICAgICAgICAgPDwgIiBhbmQgRFNUIHdhcyAiIDw8ICh0bS50bV9pc2RzdCA/ICJpbiBlZmZlY3QiIDogIm5vdCBpbiBlZmZlY3QiKSA8PCAnXG4nOwogICAgc3RkOjpjb3V0IDw8IGVyciA8PCAiXG4iOwp9