rem: sprintf(soap->tmpbuf + strlen(soap->tmpbuf), "%+03d:%02d", -t.timezone/60+(t.dstflag!=0), abs(t.timezone)%60);
add: sprintf(soap->tmpbuf + strlen(soap->tmpbuf), "%+03d:%02d", -t.timezone/60+(pT->tm_isdst!=0), abs(t.timezone)%60);
context: soap_dateTime2s(struct soap *soap, time_t n){ struct tm T;  struct tm *pT = &T;#if defined(HAVE_GMTIME_R)  if (gmtime_r(&n, pT))    strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%SZ", pT);/* WR[ */  /* The following defines were added for VxWorks*/#elif defined(HAVE_PGMTIME_R)  if (gmtime_r(&n, pT))    strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%SZ", pT);#elif defined(HAVE_PGMTIME)  if (gmtime(&n, pT))    strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%SZ", pT);/* ]WR */#elif defined(HAVE_GMTIME)  if ((pT = gmtime(&n)))    strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%SZ", pT);#elif defined(HAVE_GETTIMEOFDAY)  struct timezone tz;  memset((void*)&tz, 0, sizeof(tz));#if defined(HAVE_LOCALTIME_R)  if (localtime_r(&n, pT))  { struct timeval tv;    gettimeofday(&tv, &tz);    strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT);    sprintf(soap->tmpbuf + strlen(soap->tmpbuf), "%+03d:%02d", -tz.tz_minuteswest/60+(tz.tz_dsttime!=0), abs(tz.tz_minuteswest)%60);  }#else  if ((pT = localtime(&n)))  { struct timeval tv;    gettimeofday(&tv, &tz);    strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT);    sprintf(soap->tmpbuf + strlen(soap->tmpbuf), "%+03d:%02d", -tz.tz_minuteswest/60+(tz.tz_dsttime!=0), abs(tz.tz_minuteswest)%60);  }#endif#elif defined(HAVE_FTIME)  struct timeb t;  memset((void*)&t, 0, sizeof(t));#if defined(HAVE_LOCALTIME_R)  if (localtime_r(&n, pT))  { ftime(&t);    strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT);    sprintf(soap->tmpbuf + strlen(soap->tmpbuf), "%+03d:%02d", -t.timezone/60+(t.dstflag!=0), abs(t.timezone)%60);  }/* WR[ */  /* The following defines were added for VxWorks*/#elif defined(HAVE_PLOCALTIME_R)  if (localtime_r(&n, pT))  { strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT);    sprintf(soap->tmpbuf+strlen(soap->tmpbuf), "%+03d:%02d", t.timezone/60, abs(t.timezone)%60);  }/* ]WR */#else  if ((pT = localtime(&n)))  { ftime(&t);    strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT);    sprintf(soap->tmpbuf + strlen(soap->tmpbuf), "%+03d:%02d", -t.timezone/60+(t.dstflag!=0), abs(t.timezone)%60);  }#endif#elif defined(HAVE_LOCALTIME_R)  if (localtime_r(&n, pT))    strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT);/* WR[ */  /* The following defines were added for VxWorks*/#elif defined(HAVE_PLOCALTIME_R)  if (localtime_r(&n, pT))    strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT);/* ]WR */#else  if ((pT = localtime(&n)))    strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT);#endif  else    strcpy(soap->tmpbuf, "1969-12-31T23:59:59Z");  return soap->tmpbuf;}