|
Message-ID: <Zf91cPZden2ce-lC@sinister.lan.codevat.com> Date: Sat, 23 Mar 2024 17:36:00 -0700 From: Eric Pruitt <eric.pruitt@...il.com> To: musl@...ts.openwall.com Subject: Re: Broken mktime calculations when crossing DST boundary On Sat, Mar 23, 2024 at 08:40:50PM +0000, Alexander Weps wrote: > Is there a way, how to reliable get beginning of day etc. without tm_isdst = -1. I needed to do something similar in a program that involved sunset and sunrise calculations. Depending on what you're doing and the information you have, maybe the approach I used could work: static time_t round_down_to_midnight(time_t when) { char buf[20]; struct tm *in; struct tm out; when -= when % 60; in = localtime(&when); if (in->tm_hour == 0 && in->tm_min == 0) { return when; } sprintf(buf, "%d-%02d-%02d 00:00:00", in->tm_year + 1900, in->tm_mon + 1, in->tm_mday); strptime(buf, "%Y-%m-%d %H:%M:%S", &out); return mktime(&out); } The performance of this is not great, though. Eric
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.