source: spip-zone/_plugins_/couteau_suisse/cout_dates.js.html @ 60201

Last change on this file since 60201 was 43218, checked in by patfr@…, 9 years ago

Lame Décoration et raccourcis de langue : Pour SPIP>=2.1 on utilise l'astuce <multi>[XX]...</multi> pour bénéficier ensuite de la typo appropriée
+ un filtre cs_javascript pour les chaines de langue

File size: 10.8 KB
Line 
1#HTTP_HEADER{'Content-Type: text/javascript'}
2#CACHE{7*24*3600,cache-client}
3
4var cs_DateServeur = '[(#CHEMIN{outils/horloge_fonctions.php}|parametre_url{cs_dateserveur,oui})]';
5
6//
7// dateFormat v0.1 | 2004-04-03 15:10 | JavaScript : Formattage de Dates
8// http://www.asp-php.net/scripts/scripting/dateformat.php
9//
10// a : Ante meridiem et Post meridiem en minuscules - am ou pm
11// A : Ante meridiem et Post meridiem en majuscules - AM ou PM
12// B : Heure Internet Swatch - 000 a 999
13//     http://www.quirksmode.org/index.html?/js/beat.html
14// d : Jour du mois, sur deux chiffres avec zero initial - 01 a 31
15// D : Jour de la semaine, en 3 lettres, anglais par defaut - Mon a Sun
16// F : Mois textuel, version longue, anglais par defaut - January a December
17// g : Heure au format 12h, sans le zero initial - 1 a 12
18// G : Heure au format 24h, sans le zero initial - 0 a 23
19// h : Heure au format 12h, avec le zero initial - 01 a 12
20// H : Heure au format 24h, avec le zero initial - 00 a 23
21// i : Minutes avec le zero initial - 00 a 59
22// j : Jour du mois sans le zero initial - 1 a 31
23// l : Jour de la semaine, textuel, anglais par defaut - Sunday a Saturday
24// L : L'annee est elle bissextile ? - 0 ou 1
25// m : Mois avec le zero intial - 01 a 12
26// M : Mois, en 3 lettres, anglais par defaut - Jan a Dec
27// n : Mois sans le zero intial - 1 a 12
28// O : Difference avec l'heure de Greenwich (GMT), en heures - -1200 a +1200
29// r : Format de date RFC 822 Thu, 1 Apr 2004 12:00:00 - +0200
30// s : Secondes avec le zero initial - 00 a 59
31// S : Suffixe ordinal d'un jour, anglais par defaut - st, nd, rd, th
32// t : Nombre de jours dans le mois - 28 a 31
33// U : Secondes depuis le 1er Janvier 1970, 0h00 00s GMT - Ex: 1081072800
34// w : Jour de la semaine (0 etant dimanche, 6 samedi) - 0 a 6
35// W : Numero de la semaine dans l'annee - 1 a 52
36//     http://www.asp-php.net/tutorial/asp-php/glossaire.php?glossid=28
37// y : Annee sur 2 chiffres - Ex: 04
38// Y : Annee sur 4 chiffres - Ex: 2004
39// z : Jour de l'annee - 1 a 366
40// Z : Decalage horaire en secondes - -43200 a 43200
41// \ : Caractere d'echappement - Ex: \a, \A, \m
42
43String.prototype.padLeft = function(strChar, intLength){
44 var str = this + '';
45 while (str.length != intLength) str = strChar + str;
46 return str;
47}
48
49String.prototype.isInt = function() {
50 var oRegExp = new RegExp(/\d+/);
51 return oRegExp.test(this);
52}
53
54Array.prototype.exists = function(objValue) {
55 var boolReturn = false, i = 0;
56 for (i = 0; i < this.length; i++)
57  if (this[i] == objValue) { boolReturn = true; break; }
58 return boolReturn;
59}
60
61Date.prototype.dateFormat = function(strFormat, strLang, intTime) {
62
63 var arrayLang = ['#ENV{lang}']; // ['en', 'fr'];
64 var arrayFunctions = ['a','A','B','d','D','F','g','G','h','H','i','j','l','L','m','M','n','O','r','s','S','t','U','w','W','y','Y','z','Z'];
65
66 if (intTime) {
67  if (!intTime.toString().isInt()) intTime = null; else intTime *= 1000;
68 }
69 if (strLang) {
70  if (strLang.toString().isInt()) {
71   intTime = strLang * 1000;
72   strLang = '#ENV{lang}';//'en';
73  } else {
74   if (!arrayLang.exists(strLang)) strLang = '#ENV{lang}';//'en';
75  }
76 } else {
77  strLang = '#ENV{lang}';//'en';
78 }
79
80var cs_lang = '#ENV{lang}';
81var arrayMonths_#ENV{lang} = ['<:date_mois_1|cs_javascript:>', '<:date_mois_2|cs_javascript:>', '<:date_mois_3|cs_javascript:>', '<:date_mois_4|cs_javascript:>', '<:date_mois_5|cs_javascript:>', '<:date_mois_6|cs_javascript:>', '<:date_mois_7|cs_javascript:>', '<:date_mois_8|cs_javascript:>', '<:date_mois_9|cs_javascript:>', '<:date_mois_10|cs_javascript:>', '<:date_mois_11|cs_javascript:>', '<:date_mois_12|cs_javascript:>'];
82var arrayDays_#ENV{lang} = ['<:date_jour_1|cs_javascript:>', '<:date_jour_2|cs_javascript:>', '<:date_jour_3|cs_javascript:>', '<:date_jour_4|cs_javascript:>', '<:date_jour_5|cs_javascript:>', '<:date_jour_6|cs_javascript:>', '<:date_jour_7|cs_javascript:>'];
83var arraySuffix_#ENV{lang} = ['?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?'];
84
85// var arrayDays_en = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
86// var arrayMonths_en = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
87 var arraySuffix_en = ['st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'st'];
88
89// var arrayDays_fr = ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'];
90// var arrayMonths_fr = ['Janvier', 'F\u00e9vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Ao\u00fbt', 'Septembre', 'Octobre', 'Novembre', 'D\u00e9cembre'];
91 var arraySuffix_fr = ['er', 'nd', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me', '\u00e8me'];
92
93 // a : Ante meridiem et Post meridiem en minuscules - am ou pm
94 fct_a = function() { return (self.getHours() > 11)?'pm':'am'; }
95 // A : Ante meridiem et Post meridiem en majuscules - AM ou PM
96 fct_A = function() { return (self.getHours() > 11)?'PM':'AM'; }
97 // B : Heure Internet Swatch - 000 a 999
98 //     http://www.quirksmode.org/index.html?/js/beat.html
99 fct_B = function() {
100  var intGMTOffset = (self.getTimezoneOffset() + 60) * 60;
101  var intSeconds = (self.getHours() * 3600) + (self.getMinutes() * 60) + self.getSeconds() + intGMTOffset;
102  var intBeat = Math.floor(intSeconds / 86.4);
103  if (intBeat > 1000) intBeat -= 1000;
104  if (intBeat < 0) intBeat += 1000;
105  return intBeat.toString().padLeft('0', 3);
106 }
107 // d : Jour du mois, sur deux chiffres avec zero initial - 01 a 31 
108 fct_d = function() { return self.getDate().toString().padLeft('0', 2); }
109 // D : Jour de la semaine, en 3 lettres, anglais par defaut - Mon a Sun 
110 fct_D = function() { return eval('arrayDays_' + strLang)[self.getDay()].substring(0, 3); }
111 // F : Mois textuel, version longue, anglais par defaut - January a December 
112 fct_F = function() { return eval('arrayMonths_' + strLang)[self.getMonth()]; }
113 // g : Heure au format 12h, sans le zero initial - 1 a 12 
114 fct_g = function() { return (self.getHours() > 12) ? self.getHours() - 12 : self.getHours(); }
115 // G : Heure au format 24h, sans le zero initial - 0 a 23
116 fct_G = function() { return self.getHours(); }
117 // h : Heure au format 12h, avec le zero initial - 01 a 12
118 fct_h = function() {
119  return (self.getHours() > 12) ? (self.getHours() - 12).toString().padLeft('0', 2) : self.getHours().toString().padLeft('0', 2);
120 }
121 // H : Heure au format 24h, avec le zero initial - 00 a 23
122 fct_H = function() { return self.getHours().toString().padLeft('0', 2); }
123 // i : Minutes avec le zero initial - 00 a 59
124 fct_i = function() { return self.getMinutes().toString().padLeft('0', 2); }
125 // j : Jour du mois sans le zero initial - 1 a 31
126 fct_j = function() { return self.getDate(); }
127 // l : Jour de la semaine, textuel, anglais par defaut - Sunday a Saturday
128 fct_l = function() { return eval('arrayDays_' + strLang)[self.getDay()]; }
129 // L : L'annee est elle bissextile ? - 0 ou 1
130 fct_L = function() {
131  var intFullYear = fct_Y();
132  return ((intFullYear % 4 == 0 && intFullYear % 100 != 0) || (intFullYear % 4 == 0 && intFullYear % 100 == 0 && intFullYear % 400 == 0)) ? 1 : 0;
133 }
134 // m : Mois avec le zero intial - 01 a 12
135 fct_m = function() { return (self.getMonth() + 1).toString().padLeft('0', 2); }
136 // M : Mois, en 3 lettres, anglais par defaut - Jan a Dec
137 fct_M = function() { return eval('arrayMonths_' + strLang)[self.getMonth()].substring(0, 3); }
138 // n : Mois sans le zero intial - 1 a 12
139 fct_n = function() { return (self.getMonth() + 1); }
140 // O : Difference avec l'heure de Greenwich (GMT), en heures - -1200 a +1200
141 fct_O = function() {
142  var intTimezone = self.getTimezoneOffset();
143  var intTimezoneAbs = Math.abs(intTimezone);
144  var strTimezone = Math.floor(intTimezoneAbs / 60).toString().padLeft('0', 2) + (intTimezoneAbs % 60).toString().padLeft('0', 2);
145  return (intTimezone < 0) ? '+' + strTimezone : '-' + strTimezone ;
146 }
147 // r : Format de date RFC 822 Thu, 1 Apr 2004 12:00:00 - +0200 
148 fct_r = function() {
149  return fct_D() + ', ' + fct_j() + ' ' + fct_M() + ' ' + fct_Y() + ' ' + fct_H() + ':' + fct_i() + ':' + fct_s() + ' ' + fct_O();
150 }
151 // s : Secondes avec le zero initial - 00 a 59 
152 fct_s = function() { return (self.getSeconds()).toString().padLeft('0', 2); }
153 // S : Suffixe ordinal d'un jour, anglais par defaut - st, nd, rd, th 
154 fct_S = function() { return eval('arraySuffix_' + strLang)[self.getDate() - 1]; }
155 // t : Nombre de jours dans le mois - 28 a 31 
156 fct_t = function() {
157  var intDays = 0;
158  if (self.getMonth() == 1) {
159   intDays = 28 + fct_L();
160  } else {
161   switch (self.getMonth() % 2) {
162    case 0 : intDays = 31; break;
163    default : intDays = 30;
164   }
165  }
166  return intDays;
167 }
168 // U : Secondes depuis le 1er Janvier 1970, 0h00 00s GMT - Ex: 1081072800 
169 fct_U = function() { return Math.round(self.getTime() / 1000); }
170 // w : Jour de la semaine (0 etant dimanche, 6 samedi) - 0 a 6 
171 fct_w = function() { return self.getDay(); }
172 // W : Numero de la semaine dans l'annee - 1 a 52
173 //     http://www.asp-php.net/tutorial/asp-php/glossaire.php?glossid=28
174 fct_W = function() { return Math.floor((fct_z() - 1 - self.getDay()) / 7) + 2; }
175 // y : Annee sur 2 chiffres - Ex: 04 
176 fct_y = function() {
177  var strFullYear = fct_Y().toString();
178  return strFullYear.substring(strFullYear.length - 2, strFullYear.length);
179 }
180 // Y : Annee sur 4 chiffres - Ex: 2004 
181 fct_Y = function() { return self.getFullYear(); }
182 // z : Jour de l'annee - 1 a 366 
183 fct_z = function() {
184  var datePremierJanvier = new Date('January 1 ' + fct_Y().toString() + ' 00:00:00');
185  var intDifference = self.getTime() - datePremierJanvier.getTime();
186  return Math.floor(intDifference / 1000 / 60 / 60 / 24);
187 }
188 // Z : Decalage horaire en secondes - -43200 a 43200 
189 fct_Z = function() {
190  var intTimezone = self.getTimezoneOffset();
191  var strTimezone = Math.abs(intTimezone) * 60;
192  return (intTimezone < 0) ? strTimezone : -strTimezone ;
193 }
194
195 var self = this;
196 if (intTime) {
197  var intMyTime = self.getTime();
198  self.setTime(intTime);
199 }
200 var arrayFormat = strFormat.split(''), i = 0;
201 for (i = 0; i < arrayFormat.length; i++) {
202  if (arrayFormat[i] == '\\') {
203   arrayFormat.splice(i, 1);
204  } else {
205   if (arrayFunctions.exists(arrayFormat[i])) {
206    arrayFormat[i] = eval('fct_' + arrayFormat[i] + '();');
207   }
208  }
209 }
210 if (intMyTime) self.setTime(intMyTime);
211 return arrayFormat.join('');
212
213} // Date.prototype.dateFormat
Note: See TracBrowser for help on using the repository browser.