summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Wunsch <joerg@FreeBSD.org>2000-01-28 17:40:42 +0000
committerJoerg Wunsch <joerg@FreeBSD.org>2000-01-28 17:40:42 +0000
commit208b5822011b66b1bb7c645c9c9b989c34bcdf30 (patch)
tree71db919cf3092722ff398889aac77019702b7188
parentee51b2c45fa352dca02b88b9e1f485e9dadc6b55 (diff)
Notes
-rw-r--r--lib/libc/stdtime/strftime.36
-rw-r--r--lib/libc/stdtime/strftime.c16
2 files changed, 22 insertions, 0 deletions
diff --git a/lib/libc/stdtime/strftime.3 b/lib/libc/stdtime/strftime.3
index c4d2d8c07e23..9b2184348c8f 100644
--- a/lib/libc/stdtime/strftime.3
+++ b/lib/libc/stdtime/strftime.3
@@ -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
diff --git a/lib/libc/stdtime/strftime.c b/lib/libc/stdtime/strftime.c
index 9aa891f6e168..6404d9c4f26f 100644
--- a/lib/libc/stdtime/strftime.c
+++ b/lib/libc/stdtime/strftime.c
@@ -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;