d3-time-format.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707
  1. // https://d3js.org/d3-time-format/ v2.2.3 Copyright 2019 Mike Bostock
  2. (function (global, factory) {
  3. typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-time')) :
  4. typeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) :
  5. (global = global || self, factory(global.d3 = global.d3 || {}, global.d3));
  6. }(this, function (exports, d3Time) { 'use strict';
  7. function localDate(d) {
  8. if (0 <= d.y && d.y < 100) {
  9. var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);
  10. date.setFullYear(d.y);
  11. return date;
  12. }
  13. return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);
  14. }
  15. function utcDate(d) {
  16. if (0 <= d.y && d.y < 100) {
  17. var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));
  18. date.setUTCFullYear(d.y);
  19. return date;
  20. }
  21. return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));
  22. }
  23. function newDate(y, m, d) {
  24. return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};
  25. }
  26. function formatLocale(locale) {
  27. var locale_dateTime = locale.dateTime,
  28. locale_date = locale.date,
  29. locale_time = locale.time,
  30. locale_periods = locale.periods,
  31. locale_weekdays = locale.days,
  32. locale_shortWeekdays = locale.shortDays,
  33. locale_months = locale.months,
  34. locale_shortMonths = locale.shortMonths;
  35. var periodRe = formatRe(locale_periods),
  36. periodLookup = formatLookup(locale_periods),
  37. weekdayRe = formatRe(locale_weekdays),
  38. weekdayLookup = formatLookup(locale_weekdays),
  39. shortWeekdayRe = formatRe(locale_shortWeekdays),
  40. shortWeekdayLookup = formatLookup(locale_shortWeekdays),
  41. monthRe = formatRe(locale_months),
  42. monthLookup = formatLookup(locale_months),
  43. shortMonthRe = formatRe(locale_shortMonths),
  44. shortMonthLookup = formatLookup(locale_shortMonths);
  45. var formats = {
  46. "a": formatShortWeekday,
  47. "A": formatWeekday,
  48. "b": formatShortMonth,
  49. "B": formatMonth,
  50. "c": null,
  51. "d": formatDayOfMonth,
  52. "e": formatDayOfMonth,
  53. "f": formatMicroseconds,
  54. "H": formatHour24,
  55. "I": formatHour12,
  56. "j": formatDayOfYear,
  57. "L": formatMilliseconds,
  58. "m": formatMonthNumber,
  59. "M": formatMinutes,
  60. "p": formatPeriod,
  61. "q": formatQuarter,
  62. "Q": formatUnixTimestamp,
  63. "s": formatUnixTimestampSeconds,
  64. "S": formatSeconds,
  65. "u": formatWeekdayNumberMonday,
  66. "U": formatWeekNumberSunday,
  67. "V": formatWeekNumberISO,
  68. "w": formatWeekdayNumberSunday,
  69. "W": formatWeekNumberMonday,
  70. "x": null,
  71. "X": null,
  72. "y": formatYear,
  73. "Y": formatFullYear,
  74. "Z": formatZone,
  75. "%": formatLiteralPercent
  76. };
  77. var utcFormats = {
  78. "a": formatUTCShortWeekday,
  79. "A": formatUTCWeekday,
  80. "b": formatUTCShortMonth,
  81. "B": formatUTCMonth,
  82. "c": null,
  83. "d": formatUTCDayOfMonth,
  84. "e": formatUTCDayOfMonth,
  85. "f": formatUTCMicroseconds,
  86. "H": formatUTCHour24,
  87. "I": formatUTCHour12,
  88. "j": formatUTCDayOfYear,
  89. "L": formatUTCMilliseconds,
  90. "m": formatUTCMonthNumber,
  91. "M": formatUTCMinutes,
  92. "p": formatUTCPeriod,
  93. "q": formatUTCQuarter,
  94. "Q": formatUnixTimestamp,
  95. "s": formatUnixTimestampSeconds,
  96. "S": formatUTCSeconds,
  97. "u": formatUTCWeekdayNumberMonday,
  98. "U": formatUTCWeekNumberSunday,
  99. "V": formatUTCWeekNumberISO,
  100. "w": formatUTCWeekdayNumberSunday,
  101. "W": formatUTCWeekNumberMonday,
  102. "x": null,
  103. "X": null,
  104. "y": formatUTCYear,
  105. "Y": formatUTCFullYear,
  106. "Z": formatUTCZone,
  107. "%": formatLiteralPercent
  108. };
  109. var parses = {
  110. "a": parseShortWeekday,
  111. "A": parseWeekday,
  112. "b": parseShortMonth,
  113. "B": parseMonth,
  114. "c": parseLocaleDateTime,
  115. "d": parseDayOfMonth,
  116. "e": parseDayOfMonth,
  117. "f": parseMicroseconds,
  118. "H": parseHour24,
  119. "I": parseHour24,
  120. "j": parseDayOfYear,
  121. "L": parseMilliseconds,
  122. "m": parseMonthNumber,
  123. "M": parseMinutes,
  124. "p": parsePeriod,
  125. "q": parseQuarter,
  126. "Q": parseUnixTimestamp,
  127. "s": parseUnixTimestampSeconds,
  128. "S": parseSeconds,
  129. "u": parseWeekdayNumberMonday,
  130. "U": parseWeekNumberSunday,
  131. "V": parseWeekNumberISO,
  132. "w": parseWeekdayNumberSunday,
  133. "W": parseWeekNumberMonday,
  134. "x": parseLocaleDate,
  135. "X": parseLocaleTime,
  136. "y": parseYear,
  137. "Y": parseFullYear,
  138. "Z": parseZone,
  139. "%": parseLiteralPercent
  140. };
  141. // These recursive directive definitions must be deferred.
  142. formats.x = newFormat(locale_date, formats);
  143. formats.X = newFormat(locale_time, formats);
  144. formats.c = newFormat(locale_dateTime, formats);
  145. utcFormats.x = newFormat(locale_date, utcFormats);
  146. utcFormats.X = newFormat(locale_time, utcFormats);
  147. utcFormats.c = newFormat(locale_dateTime, utcFormats);
  148. function newFormat(specifier, formats) {
  149. return function(date) {
  150. var string = [],
  151. i = -1,
  152. j = 0,
  153. n = specifier.length,
  154. c,
  155. pad,
  156. format;
  157. if (!(date instanceof Date)) date = new Date(+date);
  158. while (++i < n) {
  159. if (specifier.charCodeAt(i) === 37) {
  160. string.push(specifier.slice(j, i));
  161. if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);
  162. else pad = c === "e" ? " " : "0";
  163. if (format = formats[c]) c = format(date, pad);
  164. string.push(c);
  165. j = i + 1;
  166. }
  167. }
  168. string.push(specifier.slice(j, i));
  169. return string.join("");
  170. };
  171. }
  172. function newParse(specifier, Z) {
  173. return function(string) {
  174. var d = newDate(1900, undefined, 1),
  175. i = parseSpecifier(d, specifier, string += "", 0),
  176. week, day;
  177. if (i != string.length) return null;
  178. // If a UNIX timestamp is specified, return it.
  179. if ("Q" in d) return new Date(d.Q);
  180. if ("s" in d) return new Date(d.s * 1000 + ("L" in d ? d.L : 0));
  181. // If this is utcParse, never use the local timezone.
  182. if (Z && !("Z" in d)) d.Z = 0;
  183. // The am-pm flag is 0 for AM, and 1 for PM.
  184. if ("p" in d) d.H = d.H % 12 + d.p * 12;
  185. // If the month was not specified, inherit from the quarter.
  186. if (d.m === undefined) d.m = "q" in d ? d.q : 0;
  187. // Convert day-of-week and week-of-year to day-of-year.
  188. if ("V" in d) {
  189. if (d.V < 1 || d.V > 53) return null;
  190. if (!("w" in d)) d.w = 1;
  191. if ("Z" in d) {
  192. week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();
  193. week = day > 4 || day === 0 ? d3Time.utcMonday.ceil(week) : d3Time.utcMonday(week);
  194. week = d3Time.utcDay.offset(week, (d.V - 1) * 7);
  195. d.y = week.getUTCFullYear();
  196. d.m = week.getUTCMonth();
  197. d.d = week.getUTCDate() + (d.w + 6) % 7;
  198. } else {
  199. week = localDate(newDate(d.y, 0, 1)), day = week.getDay();
  200. week = day > 4 || day === 0 ? d3Time.timeMonday.ceil(week) : d3Time.timeMonday(week);
  201. week = d3Time.timeDay.offset(week, (d.V - 1) * 7);
  202. d.y = week.getFullYear();
  203. d.m = week.getMonth();
  204. d.d = week.getDate() + (d.w + 6) % 7;
  205. }
  206. } else if ("W" in d || "U" in d) {
  207. if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0;
  208. day = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();
  209. d.m = 0;
  210. d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;
  211. }
  212. // If a time zone is specified, all fields are interpreted as UTC and then
  213. // offset according to the specified time zone.
  214. if ("Z" in d) {
  215. d.H += d.Z / 100 | 0;
  216. d.M += d.Z % 100;
  217. return utcDate(d);
  218. }
  219. // Otherwise, all fields are in local time.
  220. return localDate(d);
  221. };
  222. }
  223. function parseSpecifier(d, specifier, string, j) {
  224. var i = 0,
  225. n = specifier.length,
  226. m = string.length,
  227. c,
  228. parse;
  229. while (i < n) {
  230. if (j >= m) return -1;
  231. c = specifier.charCodeAt(i++);
  232. if (c === 37) {
  233. c = specifier.charAt(i++);
  234. parse = parses[c in pads ? specifier.charAt(i++) : c];
  235. if (!parse || ((j = parse(d, string, j)) < 0)) return -1;
  236. } else if (c != string.charCodeAt(j++)) {
  237. return -1;
  238. }
  239. }
  240. return j;
  241. }
  242. function parsePeriod(d, string, i) {
  243. var n = periodRe.exec(string.slice(i));
  244. return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;
  245. }
  246. function parseShortWeekday(d, string, i) {
  247. var n = shortWeekdayRe.exec(string.slice(i));
  248. return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;
  249. }
  250. function parseWeekday(d, string, i) {
  251. var n = weekdayRe.exec(string.slice(i));
  252. return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;
  253. }
  254. function parseShortMonth(d, string, i) {
  255. var n = shortMonthRe.exec(string.slice(i));
  256. return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;
  257. }
  258. function parseMonth(d, string, i) {
  259. var n = monthRe.exec(string.slice(i));
  260. return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;
  261. }
  262. function parseLocaleDateTime(d, string, i) {
  263. return parseSpecifier(d, locale_dateTime, string, i);
  264. }
  265. function parseLocaleDate(d, string, i) {
  266. return parseSpecifier(d, locale_date, string, i);
  267. }
  268. function parseLocaleTime(d, string, i) {
  269. return parseSpecifier(d, locale_time, string, i);
  270. }
  271. function formatShortWeekday(d) {
  272. return locale_shortWeekdays[d.getDay()];
  273. }
  274. function formatWeekday(d) {
  275. return locale_weekdays[d.getDay()];
  276. }
  277. function formatShortMonth(d) {
  278. return locale_shortMonths[d.getMonth()];
  279. }
  280. function formatMonth(d) {
  281. return locale_months[d.getMonth()];
  282. }
  283. function formatPeriod(d) {
  284. return locale_periods[+(d.getHours() >= 12)];
  285. }
  286. function formatQuarter(d) {
  287. return 1 + ~~(d.getMonth() / 3);
  288. }
  289. function formatUTCShortWeekday(d) {
  290. return locale_shortWeekdays[d.getUTCDay()];
  291. }
  292. function formatUTCWeekday(d) {
  293. return locale_weekdays[d.getUTCDay()];
  294. }
  295. function formatUTCShortMonth(d) {
  296. return locale_shortMonths[d.getUTCMonth()];
  297. }
  298. function formatUTCMonth(d) {
  299. return locale_months[d.getUTCMonth()];
  300. }
  301. function formatUTCPeriod(d) {
  302. return locale_periods[+(d.getUTCHours() >= 12)];
  303. }
  304. function formatUTCQuarter(d) {
  305. return 1 + ~~(d.getUTCMonth() / 3);
  306. }
  307. return {
  308. format: function(specifier) {
  309. var f = newFormat(specifier += "", formats);
  310. f.toString = function() { return specifier; };
  311. return f;
  312. },
  313. parse: function(specifier) {
  314. var p = newParse(specifier += "", false);
  315. p.toString = function() { return specifier; };
  316. return p;
  317. },
  318. utcFormat: function(specifier) {
  319. var f = newFormat(specifier += "", utcFormats);
  320. f.toString = function() { return specifier; };
  321. return f;
  322. },
  323. utcParse: function(specifier) {
  324. var p = newParse(specifier += "", true);
  325. p.toString = function() { return specifier; };
  326. return p;
  327. }
  328. };
  329. }
  330. var pads = {"-": "", "_": " ", "0": "0"},
  331. numberRe = /^\s*\d+/, // note: ignores next directive
  332. percentRe = /^%/,
  333. requoteRe = /[\\^$*+?|[\]().{}]/g;
  334. function pad(value, fill, width) {
  335. var sign = value < 0 ? "-" : "",
  336. string = (sign ? -value : value) + "",
  337. length = string.length;
  338. return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);
  339. }
  340. function requote(s) {
  341. return s.replace(requoteRe, "\\$&");
  342. }
  343. function formatRe(names) {
  344. return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i");
  345. }
  346. function formatLookup(names) {
  347. var map = {}, i = -1, n = names.length;
  348. while (++i < n) map[names[i].toLowerCase()] = i;
  349. return map;
  350. }
  351. function parseWeekdayNumberSunday(d, string, i) {
  352. var n = numberRe.exec(string.slice(i, i + 1));
  353. return n ? (d.w = +n[0], i + n[0].length) : -1;
  354. }
  355. function parseWeekdayNumberMonday(d, string, i) {
  356. var n = numberRe.exec(string.slice(i, i + 1));
  357. return n ? (d.u = +n[0], i + n[0].length) : -1;
  358. }
  359. function parseWeekNumberSunday(d, string, i) {
  360. var n = numberRe.exec(string.slice(i, i + 2));
  361. return n ? (d.U = +n[0], i + n[0].length) : -1;
  362. }
  363. function parseWeekNumberISO(d, string, i) {
  364. var n = numberRe.exec(string.slice(i, i + 2));
  365. return n ? (d.V = +n[0], i + n[0].length) : -1;
  366. }
  367. function parseWeekNumberMonday(d, string, i) {
  368. var n = numberRe.exec(string.slice(i, i + 2));
  369. return n ? (d.W = +n[0], i + n[0].length) : -1;
  370. }
  371. function parseFullYear(d, string, i) {
  372. var n = numberRe.exec(string.slice(i, i + 4));
  373. return n ? (d.y = +n[0], i + n[0].length) : -1;
  374. }
  375. function parseYear(d, string, i) {
  376. var n = numberRe.exec(string.slice(i, i + 2));
  377. return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;
  378. }
  379. function parseZone(d, string, i) {
  380. var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6));
  381. return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1;
  382. }
  383. function parseQuarter(d, string, i) {
  384. var n = numberRe.exec(string.slice(i, i + 1));
  385. return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;
  386. }
  387. function parseMonthNumber(d, string, i) {
  388. var n = numberRe.exec(string.slice(i, i + 2));
  389. return n ? (d.m = n[0] - 1, i + n[0].length) : -1;
  390. }
  391. function parseDayOfMonth(d, string, i) {
  392. var n = numberRe.exec(string.slice(i, i + 2));
  393. return n ? (d.d = +n[0], i + n[0].length) : -1;
  394. }
  395. function parseDayOfYear(d, string, i) {
  396. var n = numberRe.exec(string.slice(i, i + 3));
  397. return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;
  398. }
  399. function parseHour24(d, string, i) {
  400. var n = numberRe.exec(string.slice(i, i + 2));
  401. return n ? (d.H = +n[0], i + n[0].length) : -1;
  402. }
  403. function parseMinutes(d, string, i) {
  404. var n = numberRe.exec(string.slice(i, i + 2));
  405. return n ? (d.M = +n[0], i + n[0].length) : -1;
  406. }
  407. function parseSeconds(d, string, i) {
  408. var n = numberRe.exec(string.slice(i, i + 2));
  409. return n ? (d.S = +n[0], i + n[0].length) : -1;
  410. }
  411. function parseMilliseconds(d, string, i) {
  412. var n = numberRe.exec(string.slice(i, i + 3));
  413. return n ? (d.L = +n[0], i + n[0].length) : -1;
  414. }
  415. function parseMicroseconds(d, string, i) {
  416. var n = numberRe.exec(string.slice(i, i + 6));
  417. return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;
  418. }
  419. function parseLiteralPercent(d, string, i) {
  420. var n = percentRe.exec(string.slice(i, i + 1));
  421. return n ? i + n[0].length : -1;
  422. }
  423. function parseUnixTimestamp(d, string, i) {
  424. var n = numberRe.exec(string.slice(i));
  425. return n ? (d.Q = +n[0], i + n[0].length) : -1;
  426. }
  427. function parseUnixTimestampSeconds(d, string, i) {
  428. var n = numberRe.exec(string.slice(i));
  429. return n ? (d.s = +n[0], i + n[0].length) : -1;
  430. }
  431. function formatDayOfMonth(d, p) {
  432. return pad(d.getDate(), p, 2);
  433. }
  434. function formatHour24(d, p) {
  435. return pad(d.getHours(), p, 2);
  436. }
  437. function formatHour12(d, p) {
  438. return pad(d.getHours() % 12 || 12, p, 2);
  439. }
  440. function formatDayOfYear(d, p) {
  441. return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3);
  442. }
  443. function formatMilliseconds(d, p) {
  444. return pad(d.getMilliseconds(), p, 3);
  445. }
  446. function formatMicroseconds(d, p) {
  447. return formatMilliseconds(d, p) + "000";
  448. }
  449. function formatMonthNumber(d, p) {
  450. return pad(d.getMonth() + 1, p, 2);
  451. }
  452. function formatMinutes(d, p) {
  453. return pad(d.getMinutes(), p, 2);
  454. }
  455. function formatSeconds(d, p) {
  456. return pad(d.getSeconds(), p, 2);
  457. }
  458. function formatWeekdayNumberMonday(d) {
  459. var day = d.getDay();
  460. return day === 0 ? 7 : day;
  461. }
  462. function formatWeekNumberSunday(d, p) {
  463. return pad(d3Time.timeSunday.count(d3Time.timeYear(d) - 1, d), p, 2);
  464. }
  465. function formatWeekNumberISO(d, p) {
  466. var day = d.getDay();
  467. d = (day >= 4 || day === 0) ? d3Time.timeThursday(d) : d3Time.timeThursday.ceil(d);
  468. return pad(d3Time.timeThursday.count(d3Time.timeYear(d), d) + (d3Time.timeYear(d).getDay() === 4), p, 2);
  469. }
  470. function formatWeekdayNumberSunday(d) {
  471. return d.getDay();
  472. }
  473. function formatWeekNumberMonday(d, p) {
  474. return pad(d3Time.timeMonday.count(d3Time.timeYear(d) - 1, d), p, 2);
  475. }
  476. function formatYear(d, p) {
  477. return pad(d.getFullYear() % 100, p, 2);
  478. }
  479. function formatFullYear(d, p) {
  480. return pad(d.getFullYear() % 10000, p, 4);
  481. }
  482. function formatZone(d) {
  483. var z = d.getTimezoneOffset();
  484. return (z > 0 ? "-" : (z *= -1, "+"))
  485. + pad(z / 60 | 0, "0", 2)
  486. + pad(z % 60, "0", 2);
  487. }
  488. function formatUTCDayOfMonth(d, p) {
  489. return pad(d.getUTCDate(), p, 2);
  490. }
  491. function formatUTCHour24(d, p) {
  492. return pad(d.getUTCHours(), p, 2);
  493. }
  494. function formatUTCHour12(d, p) {
  495. return pad(d.getUTCHours() % 12 || 12, p, 2);
  496. }
  497. function formatUTCDayOfYear(d, p) {
  498. return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);
  499. }
  500. function formatUTCMilliseconds(d, p) {
  501. return pad(d.getUTCMilliseconds(), p, 3);
  502. }
  503. function formatUTCMicroseconds(d, p) {
  504. return formatUTCMilliseconds(d, p) + "000";
  505. }
  506. function formatUTCMonthNumber(d, p) {
  507. return pad(d.getUTCMonth() + 1, p, 2);
  508. }
  509. function formatUTCMinutes(d, p) {
  510. return pad(d.getUTCMinutes(), p, 2);
  511. }
  512. function formatUTCSeconds(d, p) {
  513. return pad(d.getUTCSeconds(), p, 2);
  514. }
  515. function formatUTCWeekdayNumberMonday(d) {
  516. var dow = d.getUTCDay();
  517. return dow === 0 ? 7 : dow;
  518. }
  519. function formatUTCWeekNumberSunday(d, p) {
  520. return pad(d3Time.utcSunday.count(d3Time.utcYear(d) - 1, d), p, 2);
  521. }
  522. function formatUTCWeekNumberISO(d, p) {
  523. var day = d.getUTCDay();
  524. d = (day >= 4 || day === 0) ? d3Time.utcThursday(d) : d3Time.utcThursday.ceil(d);
  525. return pad(d3Time.utcThursday.count(d3Time.utcYear(d), d) + (d3Time.utcYear(d).getUTCDay() === 4), p, 2);
  526. }
  527. function formatUTCWeekdayNumberSunday(d) {
  528. return d.getUTCDay();
  529. }
  530. function formatUTCWeekNumberMonday(d, p) {
  531. return pad(d3Time.utcMonday.count(d3Time.utcYear(d) - 1, d), p, 2);
  532. }
  533. function formatUTCYear(d, p) {
  534. return pad(d.getUTCFullYear() % 100, p, 2);
  535. }
  536. function formatUTCFullYear(d, p) {
  537. return pad(d.getUTCFullYear() % 10000, p, 4);
  538. }
  539. function formatUTCZone() {
  540. return "+0000";
  541. }
  542. function formatLiteralPercent() {
  543. return "%";
  544. }
  545. function formatUnixTimestamp(d) {
  546. return +d;
  547. }
  548. function formatUnixTimestampSeconds(d) {
  549. return Math.floor(+d / 1000);
  550. }
  551. var locale;
  552. defaultLocale({
  553. dateTime: "%x, %X",
  554. date: "%-m/%-d/%Y",
  555. time: "%-I:%M:%S %p",
  556. periods: ["AM", "PM"],
  557. days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
  558. shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
  559. months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
  560. shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
  561. });
  562. function defaultLocale(definition) {
  563. locale = formatLocale(definition);
  564. exports.timeFormat = locale.format;
  565. exports.timeParse = locale.parse;
  566. exports.utcFormat = locale.utcFormat;
  567. exports.utcParse = locale.utcParse;
  568. return locale;
  569. }
  570. var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ";
  571. function formatIsoNative(date) {
  572. return date.toISOString();
  573. }
  574. var formatIso = Date.prototype.toISOString
  575. ? formatIsoNative
  576. : exports.utcFormat(isoSpecifier);
  577. function parseIsoNative(string) {
  578. var date = new Date(string);
  579. return isNaN(date) ? null : date;
  580. }
  581. var parseIso = +new Date("2000-01-01T00:00:00.000Z")
  582. ? parseIsoNative
  583. : exports.utcParse(isoSpecifier);
  584. exports.isoFormat = formatIso;
  585. exports.isoParse = parseIso;
  586. exports.timeFormatDefaultLocale = defaultLocale;
  587. exports.timeFormatLocale = formatLocale;
  588. Object.defineProperty(exports, '__esModule', { value: true });
  589. }));