12345678910111213141516171819202122232425262728293031323334 |
- /*
- * localtime - convert a calendar time into broken down time
- */
- /* $Id$ */
- #include <time.h>
- #include "loc_time.h"
- /* We must be careful, since an int can't represent all the seconds in a day.
- * Hence the adjustment of minutes when adding timezone and dst information.
- * This assumes that both must be expressable in multiples of a minute.
- * Furthermore, it is assumed that both fit into an integer when expressed as
- * minutes (this is about 22 days, so this should not cause any problems).
- */
- struct tm *
- localtime(const time_t *timer)
- {
- struct tm *timep;
- unsigned dst;
- _tzset();
- timep = gmtime(timer); /* tm->tm_isdst == 0 */
- timep->tm_min -= _timezone / 60;
- timep->tm_sec -= _timezone % 60;
- mktime(timep);
- dst = _dstget(timep);
- if (dst) {
- timep->tm_min += dst / 60;
- timep->tm_sec += dst % 60;
- mktime(timep);
- }
- return timep;
- }
|