This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: How to set timezone for localtime()


Il 31/03/2018 08:45, Brian Inglis ha scritto:
On 2018-03-31 00:16, Giuseppe Modugno wrote:
I have the number of seconds since epoch 1970, in UTC. I'd like to convert
it into broken-down time (year, month, day, hours, ...). I live in Italy
and I need the broken-down in *local* time, so taking into account timezone
(+1 hour) *and* daylight savings.

My platform is a Cortex-M3 MCU from NXP. I'm using MCUXpresso IDE to build
my project and I'm using newlib-nano variant.

I looked at the code and it seems there is some instructions in localtime()
that take into account the timezone. However I don't know how to set
Italian timezone on my platform (somewhere I read I can set TZ environment
variable... but I don't have an environment at all).

Any help?
Does your platform at least support putenv(3)?
If so, then on a hosted platform with the latest zoneinfo package, you can run:

	$ tail -1 /usr/share/zoneinfo/Europe/Rome
	CET-1CEST,M3.5.0,M10.5.0/3

which shows the encoded EU rules for that time zone: STD CET == UTC+1 with
opposite POSIX sign, DST CEST == UTC+2 from March last Sunday at 02.00, until
October last Sunday at 03.00.
In your program:

	#include <stdlib.h>
	putenv("TZ=CET-1CEST,M3.5.0,M10.5.0/3");
	#include <time.h>
	tzset();
	time_t tt = time(&tt);
	struct tm *stmp = localtime(&tt);

should give you the correct broken down time if tzset(3) and localtime(3)
support using TZ.

Good suggestione, it works well.

Now I have another similar question. I have to convert a struct tm in UTC to time_t, but I set TZ to Italy timezone. Is there a function that makes this convertion without checking current timezone configured in TZ?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]