summaryrefslogtreecommitdiff
path: root/sys/man/2
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2020-06-15 00:12:57 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2020-06-15 00:12:57 +0200
commitfebe84af755d8b6941c6e59c1b350f889c4fccb0 (patch)
tree45cb13daa2c1ef116613a7e461e0c59fda1d5bd6 /sys/man/2
parent8b3efcfc4e3b38eab3f0ff503e573c072ff890f5 (diff)
libc: revert date change again. this is getting ridicuoulus.
this breaks the sample from the seconds manpage, and overall produces funky results. this needs alot more testing. term% seconds '23 may 2011' seconds: tmparse: invalid date 23 may 2011 near 'may 2011' term% seconds '2019-01-01 00:00:00' -118370073600
Diffstat (limited to 'sys/man/2')
-rw-r--r--sys/man/2/tmdate246
1 files changed, 0 insertions, 246 deletions
diff --git a/sys/man/2/tmdate b/sys/man/2/tmdate
deleted file mode 100644
index 531e90eb0..000000000
--- a/sys/man/2/tmdate
+++ /dev/null
@@ -1,246 +0,0 @@
-.TH TMDATE 2
-.SH NAME
-tmnow, tmgetzone, tmtime, tmparse, tmfmt, tmnorm, - convert date and time
-.SH SYNOPSIS
-.B #include <u.h>
-.br
-.B #include <libc.h>
-.PP
-.ft L
-.nf
-.EX
-typedef struct Tmd Tmd;
-typedef struct Tmfmt Tmfmt;
-
-struct {
- vlong abs; /* seconds since Jan 1 1970, UTC */
- int nsec; /* nanoseconds (range 0..1e9) */
- int sec; /* seconds (range 0..59) */
- int min; /* minutes (0..59) */
- int hour; /* hours (0..23) */
- int mday; /* day of the month (1..31) */
- int mon; /* month of the year (0..11) */
- int year; /* C.E year - 1900 */
- int wday; /* day of week (0..6, Sunday = 0) */
- int yday; /* day of year (0..365) */
- char zone[]; /* time zone name */
- int tzoff; /* time zone delta from GMT, seconds */
-};
-
-Tzone *tmgetzone(char *name);
-Tm *tmnow(Tm *tm, char *tz);
-Tm *tmtime(Tm *tm, vlong abs, Tzone *tz);
-Tm *tmtimens(Tm *tm, vlong abs, int ns, Tzone *tz);
-Tm *tmparse(Tm *dst, char *fmt, char *tm, Tzone *zone);
-void tmnorm(Tm *tm);
-Tmfmt tmfmt(Tm *tm, char *fmt);
-void tmfmtinstall(void);
-.EE
-.SH DESCRIPTION
-.PP
-This family of functions handles simple date and time manipulation.
-Times are represented as an absolute instant in time, combined with a time zone.
-.PP
-Time zones are loaded by as name.
-They can be specified as the abbreviated timezone name,
-the full timezone name, the path to a timezone file,
-or an absolute offset in the HHMM form.
-.PP
-When given as a timezone, any instant-dependent adjustments such as leap
-seconds and daylight savings time will be applied to the derived fields of
-struct tm, but will not affect the absolute time.
-The time zone name local always refers to the time in /env/timezone.
-The nil timezone always refers to GMT.
-.PP
-Tmgetzone loads a timezone by name. The returned timezone is
-cached for the lifetime of the program, and should not be freed.
-Loading a timezone repeatedly by name loads from the cache, and
-does not leak.
-.PP
-Tmnow gets the current time of day in the requested time zone.
-.PP
-Tmtime converts the millisecond-resolution timestamp 'abs'
-into a Tm struct in the requested timezone.
-Tmtimens does the same, but with a nanosecond accuracy.
-.PP
-Tmstime is identical to tmtime, but accepts the time in sec-
-onds.
-.PP
-Tmparse parses a time from a string according to the format argument.
-The result is returned in the timezone requested.
-If there is a timezone in the date, and a timezone is provided
-when parsing, then the zone is shifted to the provided timezone.
-Parsing is case-insensitive.
-.PP
-The format argument contains zero or more of the following components:
-.TP
-.B Y, YY, YYYY
-Represents the year.
-.I YY
-prints the year in 2 digit form.
-.TP
-.B M, MM, MMM, MMMM
-The month of the year, in unpadded numeric, padded numeric, short name, or long name,
-respectively.
-.TP
-.B D, DD
-The day of month in unpadded or padded numeric form, respectively.
-.TP
-.B W, WW
-The day of week in short or long name form, respectively.
-.TP
-.B h, hh
-The hour in unpadded or padded form, respectively
-.TP
-.B m, mm
-The minute in unpadded or padded form, respectively
-.TP
-.B s, ss
-The second in unpadded or padded form, respectively
-.TP
-.B z, Z, ZZ
-The timezone in named, [+-]HHMM and [+-]HH:MM form, respectively
-.TP
-.B a, A
-Lower and uppercase 'am' and 'pm' specifiers, respectively.
-.TP
-.B [...]
-Quoted text, copied directly to the output.
-.TP
-.B _
-When formatting, this inserts padding into the date format.
-The padded width of a field is the sum of format and specifier
-characters combined.
-For example,
-.I __h
-will format to a width of 3.
-.TP
-.B ?
-When parsing, this makes the following argument match fuzzily.
-Fuzzy matching means that all formats are tried, from most to least specific.
-For example,
-.I ?M
-will match
-.IR January ,
-.IR Jan ,
-.IR 01 ,
-and
-.IR 1 ,
-in that order of preference.
-.TP
-.B ~
-When parsing a date, this slackens range enforcement, accepting
-out of range values such as January
-.IR 32 ,
-which would get normalized to February 1st.
-.PP
-Any characters not specified above are copied directly to output,
-without modification.
-
-
-
-.PP
-If the format argument is nil, it makes an
-attempt to parse common human readable date formats. These
-formats include ISO-8601,RFC-3339 and RFC-2822 dates.
-.
-.PP
-Tmfmt produces a format description structure suitable for passing
-to
-.IR fmtprint (2) .
-If fmt is nil, we default to the format used in
-.IR ctime (2).
-The format of the format string is identical to
-.IR tmparse.
-
-.PP
-When parsing, any amount of whitespace is treated as a single token.
-All string matches are case insensitive, and zero padding is optional.
-
-.PP
-Tmnorm takes a manually adjusted Tm structure, and recal-
-culates the absolute time from the
-.I year, mon, mday, hr, min
-and
-.I sec
-fields. Other fields are ignored.
-This recalculation respects the time zone stored in struct tm.
-Out of range values are wrapped. For example, December 32nd
-becomes January 1st.
-
-.PP
-Tmfmtinstall installs a time format specifier %τ. The time
-format behaves as in tmfmt
-
-.SH Examples
-.PP
-All examples assume tmfmtinstall has been called.
-.PP
-Get the current date in the local timezone, UTC, and
-US_Pacific time. Print it using the default format.
-
-.IP
-.EX
-Tm t;
-Tzone *zl, *zp;
-if((zl = tmgetzone("local") == nil)
- sysfatal("load zone: %r");
-if((zp = tmgetzone("US_Pacific") == nil)
- sysfatal("load zone: %r");
-print("local: %τ\\n", tmfmt(tmnow(&t, zl), nil));
-print("gmt: %τ\\n", tmfmt(tmnow(&t, nil), nil));
-print("eastern: %τ\\n", tmfmt(tmnow(&t, zp), nil));
-.EE
-.PP
-Compare if two times are the same, regardless of timezone.
-
-.IP
-.EX
-Tm a, b;
-
-tmparse(&a, nil, "Tue Dec 10 12:36:00 PST 2019");
-tmparse(&b, nil, "Tue Dec 10 15:36:00 EST 2019");
-if(a.abs == b.abs)
- print("same\\n");
-else
- print("different\\n");
-.EE
-
-.PP
-Convert from one timezone to another.
-
-.IP
-.EX
-Tm here, there;
-Tzone *zl, *zp;
-if((zl = tmgetzone("local")) == nil)
- sysfatal("load zone: %r");
-if((zp = tmgetzone("US_Pacific")) == nil)
- sysfatal("load zone: %r");
-if(tmnow(&here, zl) == nil)
- sysfatal("get time: %r");
-if(tmtime(&there, here.abs, zp) == nil)
- sysfatal("shift time: %r");
-.EE
-
-.PP
-Add a day to two times. Because we picked daylight savings
-time to adjust over, only 23 hours are added.
-
-.EX
-Tm t;
-tmparse(&t, "W MMM D hh:mm:ss z YYYY, "Sun Nov 2 13:11:11 PST 2019");
-tm.day++;
-tmrecalc(&t);
-print("%τ", &t); /* Mon Nov 3 13:11:11 PST 2019 */
-.EE
-
-.SH BUGS
-.PP
-There is no way to format specifier for subsecond precision.
-.PP
-The timezone information that we ship is out of date.
-.PP
-The plan 9 timezone format has no way to express leap seconds.
-.PP
-We provide no way to manipulate timezones.