|
13 | 13 |
|
14 | 14 | var Locales = {
|
15 | 15 | de_DE: {
|
| 16 | + identifier: 'de-DE', |
16 | 17 | days: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
|
17 | 18 | shortDays: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
|
18 | 19 | months: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
|
|
35 | 36 | },
|
36 | 37 |
|
37 | 38 | en_CA: {
|
| 39 | + identifier: 'en-CA', |
38 | 40 | days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ],
|
39 | 41 | shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
|
40 | 42 | months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
|
|
63 | 65 | },
|
64 | 66 |
|
65 | 67 | en_US: {
|
| 68 | + identifier: 'en-US', |
66 | 69 | days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ],
|
67 | 70 | shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
|
68 | 71 | months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
|
|
91 | 94 | },
|
92 | 95 |
|
93 | 96 | es_MX: {
|
| 97 | + identifier: 'es-MX', |
94 | 98 | days: ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'],
|
95 | 99 | shortDays: ['dom', 'lun', 'mar', 'mié', 'jue', 'vie', 'sáb'],
|
96 | 100 | months: ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre',' diciembre'],
|
|
113 | 117 | },
|
114 | 118 |
|
115 | 119 | fr_FR: {
|
| 120 | + identifier: 'fr-FR', |
116 | 121 | days: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
|
117 | 122 | shortDays: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
|
118 | 123 | months: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
|
|
135 | 140 | },
|
136 | 141 |
|
137 | 142 | it_IT: {
|
| 143 | + identifier: 'it-IT', |
138 | 144 | days: ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'],
|
139 | 145 | shortDays: ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'],
|
140 | 146 | months: ['gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre'],
|
|
157 | 163 | },
|
158 | 164 |
|
159 | 165 | nl_NL: {
|
| 166 | + identifier: 'nl-NL', |
160 | 167 | days: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
|
161 | 168 | shortDays: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
|
162 | 169 | months: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
|
|
179 | 186 | },
|
180 | 187 |
|
181 | 188 | pt_BR: {
|
| 189 | + identifier: 'pt-BR', |
182 | 190 | days: ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'],
|
183 | 191 | shortDays: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],
|
184 | 192 | months: ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro'],
|
|
201 | 209 | },
|
202 | 210 |
|
203 | 211 | ru_RU: {
|
| 212 | + identifier: 'ru-RU', |
204 | 213 | days: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],
|
205 | 214 | shortDays: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
|
206 | 215 | months: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
|
|
223 | 232 | },
|
224 | 233 |
|
225 | 234 | tr_TR: {
|
| 235 | + identifier: 'tr-TR', |
226 | 236 | days: ['Pazar', 'Pazartesi', 'Salı','Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'],
|
227 | 237 | shortDays: ['Paz', 'Pzt', 'Sal', 'Çrş', 'Prş', 'Cum', 'Cts'],
|
228 | 238 | months: ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'],
|
|
247 | 257 | // By michaeljayt<[email protected]>
|
248 | 258 | // https://github.com/michaeljayt/strftime/commit/bcb4c12743811d51e568175aa7bff3fd2a77cef3
|
249 | 259 | zh_CN: {
|
| 260 | + identifier: 'zh-CN', |
250 | 261 | days: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
|
251 | 262 | shortDays: ['日', '一', '二', '三', '四', '五', '六'],
|
252 | 263 | months: ['一月份', '二月份', '三月份', '四月份', '五月份', '六月份', '七月份', '八月份', '九月份', '十月份', '十一月份', '十二月份'],
|
|
499 | 510 | resultString += "GMT";
|
500 | 511 | }
|
501 | 512 | else {
|
502 |
| - // fixme optimize |
503 |
| - var tzString = date.toString().match(/\(([\w\s]+)\)/); |
504 |
| - resultString += tzString && tzString[1] || ''; |
| 513 | + var tzName = getTimezoneName(date); |
| 514 | + resultString += tzName || ''; |
505 | 515 | }
|
506 | 516 | break;
|
507 | 517 |
|
|
809 | 819 | return (date.getTimezoneOffset() || 0) * 60000;
|
810 | 820 | }
|
811 | 821 |
|
| 822 | + // Tries to get a short timezone name using Date.toLocaleString, falling back on the platform default |
| 823 | + // using Date.toString if necessary. |
| 824 | + function getTimezoneName(date, localeIdentifier) { |
| 825 | + return getShortTimezoneName(date, localeIdentifier) || getDefaultTimezoneName(date); |
| 826 | + } |
| 827 | + |
| 828 | + // Unfortunately this returns GMT+2 when running with `TZ=Europe/Amsterdam node test.js` so it's not |
| 829 | + // perfect. |
| 830 | + function getShortTimezoneName(date, localeIdentifier) { |
| 831 | + if (localeIdentifier == null) return null; |
| 832 | + |
| 833 | + var tzString = date |
| 834 | + .toLocaleString(localeIdentifier, { timeZoneName: 'short' }) |
| 835 | + .match(/\s([\w]+)$/); |
| 836 | + return tzString && tzString[1]; |
| 837 | + } |
| 838 | + |
| 839 | + // This varies by platform so it's not an ideal way to get the time zone name. On most platforms it's |
| 840 | + // a short name but in Node v10+ and Chrome 66+ it's a long name now. Prefer getShortTimezoneName(date) |
| 841 | + // where possible. |
| 842 | + function getDefaultTimezoneName(date) { |
| 843 | + var tzString = date.toString().match(/\(([\w\s]+)\)/); |
| 844 | + return tzString && tzString[1]; |
| 845 | + } |
| 846 | + |
812 | 847 | function warn(message) {
|
813 | 848 | if (typeof console !== 'undefined' && typeof console.warn == 'function') {
|
814 | 849 | console.warn(message)
|
|
0 commit comments