[tz] strftime %s

Paul Gilmartin PaulGBoulder at AIM.com
Wed Jan 10 19:41:12 UTC 2024


On 1/10/24 09:35:34, Dag-Erling Smørgrav via tz wrote:
> Currently, strftime() implements %s by calling mktime() and then
> printing the result.  This is fine when the struct tm passed to
> strftime() came from localtime() but not when it didn't.  A better
> solution would be to call timegm() and then manually adjust the result.
> Of course that's only possible in the TM_GMTOFF case but that's still
> better than nothing.
>  .
This modification makes the two results equal, but I suspect it's
not what you want.  What is your input?  What are you trying to do?

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

int main(void)
{
	char buf[256];
	time_t t;

	time(&t);
	strftime(buf, sizeof(buf), "%s %F %T %Z", localtime(&t));
	printf("local\t%s\n", buf);

	putenv( "TZ=GMT0" );

	strftime(buf, sizeof(buf), "%s %F %T %Z", gmtime(&t));
	printf("gm\t%s\n", buf);
}

-- 
gil



More information about the tz mailing list