rem: "%Y-%m-%dT%H:%M:%S%z"
add: "%Y-%m-%dT%H:%M:%S%z", "%Y-%m-%dT%H:%M:%S,%N%z"
context: show_date (const char *format, struct timespec when){  struct tm *tm;  char *out = NULL;  size_t out_length = 0;  /* ISO 8601 formats.  See below regarding %z */  static char const * const iso_format_string[] =  {    "%Y-%m-%d",    "%Y-%m-%dT%H%z",    "%Y-%m-%dT%H:%M%z",    "%Y-%m-%dT%H:%M:%S%z"  };  tm = localtime (&when.tv_sec);  if (format == NULL)    {      if (rfc_format)	format = "%a, %d %b %Y %H:%M:%S %z";      else if (iso_8601_format)	format = iso_format_string[iso_8601_format - 1];      else	{	  char *date_fmt = DATE_FMT_LANGINFO ();	  /* Do not wrap the following literal format string with _(...).	     For example, suppose LC_ALL is unset, LC_TIME="POSIX",	     and LANG="ko_KR".	In that case, POSIX says that LC_TIME	     determines the format and contents of date and time strings	     written by date, which means "date" must generate output	     using the POSIX locale; but adding _() would cause "date"	     to use a Korean translation of the format.  */	  format = *date_fmt ? date_fmt : "%a %b %e %H:%M:%S %Z %Y";	}    }  else if (*format == '\0')    {      printf ("\n");      return;    }  while (1)    {      int done;      out_length += 200;      out = (char *) xrealloc (out, out_length);      /* Mark the first byte of the buffer so we can detect the case	 of nstrftime producing an empty string.  Otherwise, this loop	 would not terminate when date was invoked like this	 `LANG=de date +%p' on a system with good language support.  */      out[0] = '\1';      if (rfc_format)	setlocale (LC_ALL, "C");      done = (nstrftime (out, out_length, format, tm, 0, when.tv_nsec)	      || out[0] == '\0');      if (rfc_format)	setlocale (LC_ALL, "");      if (done)	break;    }  printf ("%s\n", out);  free (out);}