There were so far only 42 different conversion specifications in

strftime(3), add another one. :)  %z yields the local timezone's offset
in hours and minutes, as used in RFC822 headers.  There's a precedence
for this in Lunux' libc, and Internet software (like Perl scripts)
start using it.

OKed by (wrt. the code freeze): jkh
This commit is contained in:
Joerg Wunsch 2000-01-28 17:40:42 +00:00
parent ee51b2c45f
commit 208b582201
2 changed files with 22 additions and 0 deletions

View File

@ -202,6 +202,11 @@ is replaced by the year with century as a decimal number.
is replaced by the year without century as a decimal number (00-99).
.It Cm \&%Z
is replaced by the time zone name.
.It Cm \&%z
is replaced by the time zone offset from UTC; a leading plus sign stands for
east of UTC, a minus sign for west of UTC, hours and minutes follow
with two digits each and no delimiter between them (common form for
RFC 822 date headers).
.It Cm %+
is replaced by national representation of the date and time
(the format is similar to that produced by
@ -241,6 +246,7 @@ with a lot of extensions including
.Ql %t ,
.Ql %u ,
.Ql \&%V ,
.Ql %z ,
.Ql %+ .
The peculiar week number and year in the replacements of

View File

@ -397,6 +397,22 @@ label:
pt, ptlim);
} else pt = _add("?", pt, ptlim);
continue;
case 'z':
{
long absoff;
if (t->tm_gmtoff >= 0) {
absoff = t->tm_gmtoff;
pt = _add("+", pt, ptlim);
} else {
absoff = -t->tm_gmtoff;
pt = _add("-", pt, ptlim);
}
pt = _conv(absoff / 3600, "%02d",
pt, ptlim);
pt = _conv((absoff % 3600) / 60, "%02d",
pt, ptlim);
};
continue;
case '+':
pt = _fmt(Locale->date_fmt, t, pt, ptlim);
continue;