⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dt_common.c

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "postgres_fe.h"#include <time.h>#include <ctype.h>#include <math.h>#include "extern.h"#include "dt.h"#include "pgtypes_timestamp.h"int			day_tab[2][13] = {	{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0},{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0}};typedef long AbsoluteTime;#define ABS_SIGNBIT				((char) 0200)#define POS(n)					(n)#define NEG(n)					((n)|ABS_SIGNBIT)#define FROMVAL(tp)				(-SIGNEDCHAR((tp)->value) * 15) /* uncompress */#define VALMASK					((char) 0177)#define SIGNEDCHAR(c)	((c)&ABS_SIGNBIT? -((c)&VALMASK): (c))static datetkn datetktbl[] = {/*	text, token, lexval */	{EARLY, RESERV, DTK_EARLY}, /* "-infinity" reserved for "early time" */	{"abstime", IGNORE_DTF, 0}, /* for pre-v6.1 "Invalid Abstime" */	{"acsst", DTZ, POS(42)},	/* Cent. Australia */	{"acst", DTZ, NEG(16)},		/* Atlantic/Porto Acre */	{"act", TZ, NEG(20)},		/* Atlantic/Porto Acre */	{DA_D, ADBC, AD},			/* "ad" for years >= 0 */	{"adt", DTZ, NEG(12)},		/* Atlantic Daylight Time */	{"aesst", DTZ, POS(44)},	/* E. Australia */	{"aest", TZ, POS(40)},		/* Australia Eastern Std Time */	{"aft", TZ, POS(18)},		/* Kabul */	{"ahst", TZ, NEG(40)},		/* Alaska-Hawaii Std Time */	{"akdt", DTZ, NEG(32)},		/* Alaska Daylight Time */	{"akst", DTZ, NEG(36)},		/* Alaska Standard Time */	{"allballs", RESERV, DTK_ZULU},		/* 00:00:00 */	{"almst", TZ, POS(28)},		/* Almaty Savings Time */	{"almt", TZ, POS(24)},		/* Almaty Time */	{"am", AMPM, AM},	{"amst", DTZ, POS(20)},		/* Armenia Summer Time (Yerevan) */#if 0	{"amst", DTZ, NEG(12)},		/* Porto Velho */#endif	{"amt", TZ, POS(16)},		/* Armenia Time (Yerevan) */	{"anast", DTZ, POS(52)},	/* Anadyr Summer Time (Russia) */	{"anat", TZ, POS(48)},		/* Anadyr Time (Russia) */	{"apr", MONTH, 4},	{"april", MONTH, 4},#if 0	aqtst	aqtt	arst#endif	{"art", TZ, NEG(12)},		/* Argentina Time */#if 0	ashst	ast							/* Atlantic Standard Time, Arabia Standard								 * Time, Acre Standard Time */#endif	{"ast", TZ, NEG(16)},		/* Atlantic Std Time (Canada) */	{"at", IGNORE_DTF, 0},		/* "at" (throwaway) */	{"aug", MONTH, 8},	{"august", MONTH, 8},	{"awsst", DTZ, POS(36)},	/* W. Australia */	{"awst", TZ, POS(32)},		/* W. Australia */	{"awt", DTZ, NEG(12)},	{"azost", DTZ, POS(0)},		/* Azores Summer Time */	{"azot", TZ, NEG(4)},		/* Azores Time */	{"azst", DTZ, POS(20)},		/* Azerbaijan Summer Time */	{"azt", TZ, POS(16)},		/* Azerbaijan Time */	{DB_C, ADBC, BC},			/* "bc" for years < 0 */	{"bdst", TZ, POS(8)},		/* British Double Summer Time */	{"bdt", TZ, POS(24)},		/* Dacca */	{"bnt", TZ, POS(32)},		/* Brunei Darussalam Time */	{"bort", TZ, POS(32)},		/* Borneo Time (Indonesia) */#if 0	bortst	bost#endif	{"bot", TZ, NEG(16)},		/* Bolivia Time */	{"bra", TZ, NEG(12)},		/* Brazil Time */#if 0	brst	brt#endif	{"bst", DTZ, POS(4)},		/* British Summer Time */#if 0	{"bst", TZ, NEG(12)},		/* Brazil Standard Time */	{"bst", DTZ, NEG(44)},		/* Bering Summer Time */#endif	{"bt", TZ, POS(12)},		/* Baghdad Time */	{"btt", TZ, POS(24)},		/* Bhutan Time */	{"cadt", DTZ, POS(42)},		/* Central Australian DST */	{"cast", TZ, POS(38)},		/* Central Australian ST */	{"cat", TZ, NEG(40)},		/* Central Alaska Time */	{"cct", TZ, POS(32)},		/* China Coast Time */#if 0	{"cct", TZ, POS(26)},		/* Indian Cocos (Island) Time */#endif	{"cdt", DTZ, NEG(20)},		/* Central Daylight Time */	{"cest", DTZ, POS(8)},		/* Central European Dayl.Time */	{"cet", TZ, POS(4)},		/* Central European Time */	{"cetdst", DTZ, POS(8)},	/* Central European Dayl.Time */	{"chadt", DTZ, POS(55)},	/* Chatham Island Daylight Time (13:45) */	{"chast", TZ, POS(51)},		/* Chatham Island Time (12:45) */#if 0	ckhst#endif	{"ckt", TZ, POS(48)},		/* Cook Islands Time */	{"clst", DTZ, NEG(12)},		/* Chile Summer Time */	{"clt", TZ, NEG(16)},		/* Chile Time */#if 0	cost#endif	{"cot", TZ, NEG(20)},		/* Columbia Time */	{"cst", TZ, NEG(24)},		/* Central Standard Time */	{DCURRENT, RESERV, DTK_CURRENT},	/* "current" is always now */#if 0	cvst#endif	{"cvt", TZ, POS(28)},		/* Christmas Island Time (Indian Ocean) */	{"cxt", TZ, POS(28)},		/* Christmas Island Time (Indian Ocean) */	{"d", UNITS, DTK_DAY},		/* "day of month" for ISO input */	{"davt", TZ, POS(28)},		/* Davis Time (Antarctica) */	{"ddut", TZ, POS(40)},		/* Dumont-d'Urville Time (Antarctica) */	{"dec", MONTH, 12},	{"december", MONTH, 12},	{"dnt", TZ, POS(4)},		/* Dansk Normal Tid */	{"dow", RESERV, DTK_DOW},	/* day of week */	{"doy", RESERV, DTK_DOY},	/* day of year */	{"dst", DTZMOD, 6},#if 0	{"dusst", DTZ, POS(24)},	/* Dushanbe Summer Time */#endif	{"easst", DTZ, NEG(20)},	/* Easter Island Summer Time */	{"east", TZ, NEG(24)},		/* Easter Island Time */	{"eat", TZ, POS(12)},		/* East Africa Time */#if 0	{"east", DTZ, POS(16)},		/* Indian Antananarivo Savings Time */	{"eat", TZ, POS(12)},		/* Indian Antananarivo Time */	{"ect", TZ, NEG(16)},		/* Eastern Caribbean Time */	{"ect", TZ, NEG(20)},		/* Ecuador Time */#endif	{"edt", DTZ, NEG(16)},		/* Eastern Daylight Time */	{"eest", DTZ, POS(12)},		/* Eastern Europe Summer Time */	{"eet", TZ, POS(8)},		/* East. Europe, USSR Zone 1 */	{"eetdst", DTZ, POS(12)},	/* Eastern Europe Daylight Time */	{"egst", DTZ, POS(0)},		/* East Greenland Summer Time */	{"egt", TZ, NEG(4)},		/* East Greenland Time */#if 0	ehdt#endif	{EPOCH, RESERV, DTK_EPOCH}, /* "epoch" reserved for system epoch time */	{"est", TZ, NEG(20)},		/* Eastern Standard Time */	{"feb", MONTH, 2},	{"february", MONTH, 2},	{"fjst", DTZ, NEG(52)},		/* Fiji Summer Time (13 hour offset!) */	{"fjt", TZ, NEG(48)},		/* Fiji Time */	{"fkst", DTZ, NEG(12)},		/* Falkland Islands Summer Time */	{"fkt", TZ, NEG(8)},		/* Falkland Islands Time */#if 0	fnst	fnt#endif	{"fri", DOW, 5},	{"friday", DOW, 5},	{"fst", TZ, POS(4)},		/* French Summer Time */	{"fwt", DTZ, POS(8)},		/* French Winter Time  */	{"galt", TZ, NEG(24)},		/* Galapagos Time */	{"gamt", TZ, NEG(36)},		/* Gambier Time */	{"gest", DTZ, POS(20)},		/* Georgia Summer Time */	{"get", TZ, POS(16)},		/* Georgia Time */	{"gft", TZ, NEG(12)},		/* French Guiana Time */#if 0	ghst#endif	{"gilt", TZ, POS(48)},		/* Gilbert Islands Time */	{"gmt", TZ, POS(0)},		/* Greenwish Mean Time */	{"gst", TZ, POS(40)},		/* Guam Std Time, USSR Zone 9 */	{"gyt", TZ, NEG(16)},		/* Guyana Time */	{"h", UNITS, DTK_HOUR},		/* "hour" */#if 0	hadt	hast#endif	{"hdt", DTZ, NEG(36)},		/* Hawaii/Alaska Daylight Time */#if 0	hkst#endif	{"hkt", TZ, POS(32)},		/* Hong Kong Time */#if 0	{"hmt", TZ, POS(12)},		/* Hellas ? ? */	hovst	hovt#endif	{"hst", TZ, NEG(40)},		/* Hawaii Std Time */#if 0	hwt#endif	{"ict", TZ, POS(28)},		/* Indochina Time */	{"idle", TZ, POS(48)},		/* Intl. Date Line, East */	{"idlw", TZ, NEG(48)},		/* Intl. Date Line, West */#if 0	idt							/* Israeli, Iran, Indian Daylight Time */#endif	{LATE, RESERV, DTK_LATE},	/* "infinity" reserved for "late time" */	{INVALID, RESERV, DTK_INVALID},		/* "invalid" reserved for bad time */	{"iot", TZ, POS(20)},		/* Indian Chagos Time */	{"irkst", DTZ, POS(36)},	/* Irkutsk Summer Time */	{"irkt", TZ, POS(32)},		/* Irkutsk Time */	{"irt", TZ, POS(14)},		/* Iran Time */#if 0	isst#endif	{"ist", TZ, POS(8)},		/* Israel */	{"it", TZ, POS(14)},		/* Iran Time */	{"j", UNITS, DTK_JULIAN},	{"jan", MONTH, 1},	{"january", MONTH, 1},	{"javt", TZ, POS(28)},		/* Java Time (07:00? see JT) */	{"jayt", TZ, POS(36)},		/* Jayapura Time (Indonesia) */	{"jd", UNITS, DTK_JULIAN},	{"jst", TZ, POS(36)},		/* Japan Std Time,USSR Zone 8 */	{"jt", TZ, POS(30)},		/* Java Time (07:30? see JAVT) */	{"jul", MONTH, 7},	{"julian", UNITS, DTK_JULIAN},	{"july", MONTH, 7},	{"jun", MONTH, 6},	{"june", MONTH, 6},	{"kdt", DTZ, POS(40)},		/* Korea Daylight Time */	{"kgst", DTZ, POS(24)},		/* Kyrgyzstan Summer Time */	{"kgt", TZ, POS(20)},		/* Kyrgyzstan Time */	{"kost", TZ, POS(48)},		/* Kosrae Time */	{"krast", DTZ, POS(28)},	/* Krasnoyarsk Summer Time */	{"krat", TZ, POS(32)},		/* Krasnoyarsk Standard Time */	{"kst", TZ, POS(36)},		/* Korea Standard Time */	{"lhdt", DTZ, POS(44)},		/* Lord Howe Daylight Time, Australia */	{"lhst", TZ, POS(42)},		/* Lord Howe Standard Time, Australia */	{"ligt", TZ, POS(40)},		/* From Melbourne, Australia */	{"lint", TZ, POS(56)},		/* Line Islands Time (Kiribati; +14 hours!) */	{"lkt", TZ, POS(24)},		/* Lanka Time */	{"m", UNITS, DTK_MONTH},	/* "month" for ISO input */	{"magst", DTZ, POS(48)},	/* Magadan Summer Time */	{"magt", TZ, POS(44)},		/* Magadan Time */	{"mar", MONTH, 3},	{"march", MONTH, 3},	{"mart", TZ, NEG(38)},		/* Marquesas Time */	{"mawt", TZ, POS(24)},		/* Mawson, Antarctica */	{"may", MONTH, 5},	{"mdt", DTZ, NEG(24)},		/* Mountain Daylight Time */	{"mest", DTZ, POS(8)},		/* Middle Europe Summer Time */	{"met", TZ, POS(4)},		/* Middle Europe Time */	{"metdst", DTZ, POS(8)},	/* Middle Europe Daylight Time */	{"mewt", TZ, POS(4)},		/* Middle Europe Winter Time */	{"mez", TZ, POS(4)},		/* Middle Europe Zone */	{"mht", TZ, POS(48)},		/* Kwajalein */	{"mm", UNITS, DTK_MINUTE},	/* "minute" for ISO input */	{"mmt", TZ, POS(26)},		/* Myannar Time */	{"mon", DOW, 1},	{"monday", DOW, 1},#if 0	most#endif	{"mpt", TZ, POS(40)},		/* North Mariana Islands Time */	{"msd", DTZ, POS(16)},		/* Moscow Summer Time */	{"msk", TZ, POS(12)},		/* Moscow Time */	{"mst", TZ, NEG(28)},		/* Mountain Standard Time */	{"mt", TZ, POS(34)},		/* Moluccas Time */	{"mut", TZ, POS(16)},		/* Mauritius Island Time */	{"mvt", TZ, POS(20)},		/* Maldives Island Time */	{"myt", TZ, POS(32)},		/* Malaysia Time */#if 0	ncst#endif	{"nct", TZ, POS(44)},		/* New Caledonia Time */	{"ndt", DTZ, NEG(10)},		/* Nfld. Daylight Time */	{"nft", TZ, NEG(14)},		/* Newfoundland Standard Time */	{"nor", TZ, POS(4)},		/* Norway Standard Time */	{"nov", MONTH, 11},	{"november", MONTH, 11},	{"novst", DTZ, POS(28)},	/* Novosibirsk Summer Time */	{"novt", TZ, POS(24)},		/* Novosibirsk Standard Time */	{NOW, RESERV, DTK_NOW},		/* current transaction time */	{"npt", TZ, POS(23)},		/* Nepal Standard Time (GMT-5:45) */	{"nst", TZ, NEG(14)},		/* Nfld. Standard Time */	{"nt", TZ, NEG(44)},		/* Nome Time */	{"nut", TZ, NEG(44)},		/* Niue Time */	{"nzdt", DTZ, POS(52)},		/* New Zealand Daylight Time */	{"nzst", TZ, POS(48)},		/* New Zealand Standard Time */	{"nzt", TZ, POS(48)},		/* New Zealand Time */	{"oct", MONTH, 10},	{"october", MONTH, 10},	{"omsst", DTZ, POS(28)},	/* Omsk Summer Time */	{"omst", TZ, POS(24)},		/* Omsk Time */	{"on", IGNORE_DTF, 0},		/* "on" (throwaway) */	{"pdt", DTZ, NEG(28)},		/* Pacific Daylight Time */#if 0	pest#endif	{"pet", TZ, NEG(20)},		/* Peru Time */	{"petst", DTZ, POS(52)},	/* Petropavlovsk-Kamchatski Summer Time */	{"pett", TZ, POS(48)},		/* Petropavlovsk-Kamchatski Time */	{"pgt", TZ, POS(40)},		/* Papua New Guinea Time */	{"phot", TZ, POS(52)},		/* Phoenix Islands (Kiribati) Time */#if 0	phst#endif	{"pht", TZ, POS(32)},		/* Phillipine Time */	{"pkt", TZ, POS(20)},		/* Pakistan Time */	{"pm", AMPM, PM},	{"pmdt", DTZ, NEG(8)},		/* Pierre & Miquelon Daylight Time */#if 0	pmst#endif	{"pont", TZ, POS(44)},		/* Ponape Time (Micronesia) */	{"pst", TZ, NEG(32)},		/* Pacific Standard Time */	{"pwt", TZ, POS(36)},		/* Palau Time */	{"pyst", DTZ, NEG(12)},		/* Paraguay Summer Time */	{"pyt", TZ, NEG(16)},		/* Paraguay Time */	{"ret", DTZ, POS(16)},		/* Reunion Island Time */	{"s", UNITS, DTK_SECOND},	/* "seconds" for ISO input */	{"sadt", DTZ, POS(42)},		/* S. Australian Dayl. Time */#if 0	samst	samt#endif	{"sast", TZ, POS(38)},		/* South Australian Std Time */	{"sat", DOW, 6},	{"saturday", DOW, 6},#if 0	sbt#endif	{"sct", DTZ, POS(16)},		/* Mahe Island Time */	{"sep", MONTH, 9},	{"sept", MONTH, 9},	{"september", MONTH, 9},	{"set", TZ, NEG(4)},		/* Seychelles Time ?? */#if 0	sgt#endif	{"sst", DTZ, POS(8)},		/* Swedish Summer Time */	{"sun", DOW, 0},	{"sunday", DOW, 0},	{"swt", TZ, POS(4)},		/* Swedish Winter Time */#if 0	syot#endif	{"t", ISOTIME, DTK_TIME},	/* Filler for ISO time fields */	{"tft", TZ, POS(20)},		/* Kerguelen Time */	{"that", TZ, NEG(40)},		/* Tahiti Time */	{"thu", DOW, 4},	{"thur", DOW, 4},	{"thurs", DOW, 4},	{"thursday", DOW, 4},	{"tjt", TZ, POS(20)},		/* Tajikistan Time */	{"tkt", TZ, NEG(40)},		/* Tokelau Time */	{"tmt", TZ, POS(20)},		/* Turkmenistan Time */	{TODAY, RESERV, DTK_TODAY}, /* midnight */	{TOMORROW, RESERV, DTK_TOMORROW},	/* tomorrow midnight */#if 0	tost#endif	{"tot", TZ, POS(52)},		/* Tonga Time */#if 0	tpt#endif	{"truk", TZ, POS(40)},		/* Truk Time */	{"tue", DOW, 2},	{"tues", DOW, 2},	{"tuesday", DOW, 2},	{"tvt", TZ, POS(48)},		/* Tuvalu Time */#if 0	uct#endif	{"ulast", DTZ, POS(36)},	/* Ulan Bator Summer Time */	{"ulat", TZ, POS(32)},		/* Ulan Bator Time */	{"undefined", RESERV, DTK_INVALID}, /* pre-v6.1 invalid time */	{"ut", TZ, POS(0)},	{"utc", TZ, POS(0)},	{"uyst", DTZ, NEG(8)},		/* Uruguay Summer Time */	{"uyt", TZ, NEG(12)},		/* Uruguay Time */	{"uzst", DTZ, POS(24)},		/* Uzbekistan Summer Time */	{"uzt", TZ, POS(20)},		/* Uzbekistan Time */	{"vet", TZ, NEG(16)},		/* Venezuela Time */	{"vlast", DTZ, POS(44)},	/* Vladivostok Summer Time */	{"vlat", TZ, POS(40)},		/* Vladivostok Time */#if 0	vust#endif	{"vut", TZ, POS(44)},		/* Vanuata Time */	{"wadt", DTZ, POS(32)},		/* West Australian DST */	{"wakt", TZ, POS(48)},		/* Wake Time */#if 0	warst#endif	{"wast", TZ, POS(28)},		/* West Australian Std Time */	{"wat", TZ, NEG(4)},		/* West Africa Time */	{"wdt", DTZ, POS(36)},		/* West Australian DST */	{"wed", DOW, 3},	{"wednesday", DOW, 3},	{"weds", DOW, 3},	{"west", DTZ, POS(4)},		/* Western Europe Summer Time */	{"wet", TZ, POS(0)},		/* Western Europe */	{"wetdst", DTZ, POS(4)},	/* Western Europe Daylight Savings Time */	{"wft", TZ, POS(48)},		/* Wallis and Futuna Time */	{"wgst", DTZ, NEG(8)},		/* West Greenland Summer Time */	{"wgt", TZ, NEG(12)},		/* West Greenland Time */	{"wst", TZ, POS(32)},		/* West Australian Standard Time */	{"y", UNITS, DTK_YEAR},		/* "year" for ISO input */	{"yakst", DTZ, POS(40)},	/* Yakutsk Summer Time */	{"yakt", TZ, POS(36)},		/* Yakutsk Time */	{"yapt", TZ, POS(40)},		/* Yap Time (Micronesia) */	{"ydt", DTZ, NEG(32)},		/* Yukon Daylight Time */	{"yekst", DTZ, POS(24)},	/* Yekaterinburg Summer Time */	{"yekt", TZ, POS(20)},		/* Yekaterinburg Time */	{YESTERDAY, RESERV, DTK_YESTERDAY}, /* yesterday midnight */	{"yst", TZ, NEG(36)},		/* Yukon Standard Time */	{"z", TZ, POS(0)},			/* time zone tag per ISO-8601 */	{"zp4", TZ, NEG(16)},		/* UTC +4  hours. */	{"zp5", TZ, NEG(20)},		/* UTC +5  hours. */	{"zp6", TZ, NEG(24)},		/* UTC +6  hours. */	{ZULU, TZ, POS(0)},			/* UTC */};static datetkn deltatktbl[] = {	/* text, token, lexval */	{"@", IGNORE_DTF, 0},		/* postgres relative prefix */	{DAGO, AGO, 0},				/* "ago" indicates negative time offset */	{"c", UNITS, DTK_CENTURY},	/* "century" relative */	{"cent", UNITS, DTK_CENTURY},		/* "century" relative */	{"centuries", UNITS, DTK_CENTURY},	/* "centuries" relative */	{DCENTURY, UNITS, DTK_CENTURY},		/* "century" relative */	{"d", UNITS, DTK_DAY},		/* "day" relative */	{DDAY, UNITS, DTK_DAY},		/* "day" relative */	{"days", UNITS, DTK_DAY},	/* "days" relative */	{"dec", UNITS, DTK_DECADE}, /* "decade" relative */	{DDECADE, UNITS, DTK_DECADE},		/* "decade" relative */	{"decades", UNITS, DTK_DECADE},		/* "decades" relative */	{"decs", UNITS, DTK_DECADE},	/* "decades" relative */	{"h", UNITS, DTK_HOUR},		/* "hour" relative */	{DHOUR, UNITS, DTK_HOUR},	/* "hour" relative */	{"hours", UNITS, DTK_HOUR}, /* "hours" relative */	{"hr", UNITS, DTK_HOUR},	/* "hour" relative */	{"hrs", UNITS, DTK_HOUR},	/* "hours" relative */	{INVALID, RESERV, DTK_INVALID},		/* reserved for invalid time */	{"m", UNITS, DTK_MINUTE},	/* "minute" relative */	{"microsecon", UNITS, DTK_MICROSEC},		/* "microsecond" relative */	{"mil", UNITS, DTK_MILLENNIUM},		/* "millennium" relative */	{"millennia", UNITS, DTK_MILLENNIUM},		/* "millennia" relative */	{DMILLENNIUM, UNITS, DTK_MILLENNIUM},		/* "millennium" relative */	{"millisecon", UNITS, DTK_MILLISEC},		/* relative */	{"mils", UNITS, DTK_MILLENNIUM},	/* "millennia" relative */	{"min", UNITS, DTK_MINUTE}, /* "minute" relative */	{"mins", UNITS, DTK_MINUTE},	/* "minutes" relative */	{DMINUTE, UNITS, DTK_MINUTE},		/* "minute" relative */	{"minutes", UNITS, DTK_MINUTE},		/* "minutes" relative */	{"mon", UNITS, DTK_MONTH},	/* "months" relative */	{"mons", UNITS, DTK_MONTH}, /* "months" relative */	{DMONTH, UNITS, DTK_MONTH}, /* "month" relative */	{"months", UNITS, DTK_MONTH},	{"ms", UNITS, DTK_MILLISEC},	{"msec", UNITS, DTK_MILLISEC},	{DMILLISEC, UNITS, DTK_MILLISEC},	{"mseconds", UNITS, DTK_MILLISEC},	{"msecs", UNITS, DTK_MILLISEC},	{"qtr", UNITS, DTK_QUARTER},	/* "quarter" relative */	{DQUARTER, UNITS, DTK_QUARTER},		/* "quarter" relative */	{"reltime", IGNORE_DTF, 0}, /* pre-v6.1 "Undefined Reltime" */	{"s", UNITS, DTK_SECOND},	{"sec", UNITS, DTK_SECOND},	{DSECOND, UNITS, DTK_SECOND},	{"seconds", UNITS, DTK_SECOND},	{"secs", UNITS, DTK_SECOND},	{DTIMEZONE, UNITS, DTK_TZ}, /* "timezone" time offset */	{"timezone_h", UNITS, DTK_TZ_HOUR}, /* timezone hour units */	{"timezone_m", UNITS, DTK_TZ_MINUTE},		/* timezone minutes units */	{"undefined", RESERV, DTK_INVALID}, /* pre-v6.1 invalid time */	{"us", UNITS, DTK_MICROSEC},	/* "microsecond" relative */	{"usec", UNITS, DTK_MICROSEC},		/* "microsecond" relative */	{DMICROSEC, UNITS, DTK_MICROSEC},	/* "microsecond" relative */	{"useconds", UNITS, DTK_MICROSEC},	/* "microseconds" relative */	{"usecs", UNITS, DTK_MICROSEC},		/* "microseconds" relative */	{"w", UNITS, DTK_WEEK},		/* "week" relative */	{DWEEK, UNITS, DTK_WEEK},	/* "week" relative */	{"weeks", UNITS, DTK_WEEK}, /* "weeks" relative */	{"y", UNITS, DTK_YEAR},		/* "year" relative */	{DYEAR, UNITS, DTK_YEAR},	/* "year" relative */	{"years", UNITS, DTK_YEAR}, /* "years" relative */	{"yr", UNITS, DTK_YEAR},	/* "year" relative */	{"yrs", UNITS, DTK_YEAR},	/* "years" relative */};static unsigned int szdatetktbl = sizeof datetktbl / sizeof datetktbl[0];static unsigned int szdeltatktbl = sizeof deltatktbl / sizeof deltatktbl[0];static datetkn *datecache[MAXDATEFIELDS] = {NULL};static datetkn *deltacache[MAXDATEFIELDS] = {NULL};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -