aboutsummaryrefslogtreecommitdiff
path: root/files/ca/web/javascript/reference/global_objects/date/index.html
blob: 734d90ce5971ffb049fdce8819198098d86d80a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
---
title: Date
slug: Web/JavaScript/Reference/Global_Objects/Date
translation_of: Web/JavaScript/Reference/Global_Objects/Date
original_slug: Web/JavaScript/Referencia/Objectes_globals/Date
---
<div>{{JSRef("Global_Objects", "Date")}}</div>

<h2 id="Summary" name="Summary">Resum</h2>

<p>Crea una instància de tipus <strong><code>Date</code></strong> de JavaScript, que representa un únic moment en el temps. Els objectes de tipus <code>Date</code> es basen en un valor de temps que mesura el nombre de milisegons que han passat des de l'u de gener de 1970 UTC.</p>

<h2 id="Syntax" name="Syntax">Constructor</h2>

<pre class="syntaxbox"><code>new Date();
new Date(<var>valor</var>);
new Date(<var>dataString</var>);
new Date(any, mes[, dia[, hora[, minuts[, segons[, <var>milisegons</var>]]]]]);
</code></pre>

<div class="note">
<p><strong>Nota:</strong> Els objectes Date de JavaScript només poden ser instanciats cridant Date com a constructor: Si es crida la funció com una funció normal (és a dir, sense l'operador {{jsxref("Operators/new", "new")}}), aquesta retornarà una string en comptes d'un objecte de tipus Date; al contrari que altres tipus d'objectes JavaScript, els objectes de JavaScript de tipus Date no poden ser representats com a literals.</p>
</div>

<h3 id="Parameters" name="Parameters">Paràmetres</h3>

<div class="note">
<p><strong>Nota:</strong> Quan es crida <code>Date</code> com a constructor amb més d'un argument, si els valors són més grans que el seu rang lògic (per exemple, si es passa 13 com a valor pel mes o 70 com a valor de minuts), <code>Date</code> ajusta el valor adjacent. Per exemple, <code>new Date(2013, 13, 1)</code> és equivalent a <code>new Date(2014, 1, 1)</code>, ambdós creen un objecte de tipus <code>Date</code> que representa <code>2014-02-01</code> (cal destacar que els mesos es comencen a contar des de zero). El mateix s'aplica per a altres valors: <code>new Date(2013, 2, 1, 0, 70)</code> és equivalent a <code>new Date(2013, 2, 1, 1, 10)</code> i ambdós representen <code>2013-03-01T01:10:00</code>.</p>
</div>

<div class="note">
<p><strong>Nota:</strong> Quan es crida Date com a constructor amb més d'un argument, els arguments especificats representen l'hora local. Si es pretèn passar valors UTC, utilitzeu <code>new Date({{jsxref("Date.UTC()", "Date.UTC(...)")}})</code> amb aquests arguments.</p>
</div>

<dl>
 <dt><code>valor</code></dt>
 <dd>Nombre sencer que representa el nombre de milisegons des de l'1 de gener de 1970 00:00:00 UTC (Època UNIX).</dd>
 <dt><code>dataString</code></dt>
 <dd>Valor String que representa una data. La String ha d'estar en un format reconegut pel mètode {{jsxref("Date.parse()")}} (<a href="http://tools.ietf.org/html/rfc2822#page-14">Marques de temps RFC 2822 compatibles amb el IETF</a> o bé una <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15">versió de la ISO8601</a>).</dd>
 <dt><code>any</code></dt>
 <dd>Valor sencer que representa un any. Els valors des de 0 a 99 representen els anys des de 1900 a 1999. Vegeu l'{{anch("Example:_Two_digit_years_map_to_1900_-_1999", "exemple a continuació")}}.</dd>
 <dt><code>mes</code></dt>
 <dd>Valor sencer que representa un mes, començant per zero com a gener i acabant amb 11 com a desembre.</dd>
 <dt><code>dia</code></dt>
 <dd>Opcional. Valor sencer que representa el dia del mes.</dd>
 <dt><code>hora</code></dt>
 <dd>Opcional. Valor sencer que representa l'hora del dia.</dd>
 <dt><code>minut</code></dt>
 <dd>Opcional. Valor sencer que representa els minuts d'un segment de temps.</dd>
 <dt><code>segon</code></dt>
 <dd>Opcional. Valor sencer que representa els segons d'un segment de temps.</dd>
 <dt><code>milisegons</code></dt>
 <dd>Opcional. Valor sencer que representa els milisegons d'un segment de temps.</dd>
</dl>

<h2 id="Description" name="Description">Descripció</h2>

<ul>
 <li>Si no es proporciona cap argument, el constructor crea un objecte de JavaScript de tipus <code>Date</code> i l'inicialitza amb l'hora actual proporcionada pel sistema.</li>
 <li>Si es proporcionen al menys dos arguments, els arguments no proporcionats es consideren o bé 1 (si no s'especifica el dia) o bé 0 per a tots els altres.</li>
 <li>L'hora de JavaScript es basa en els milisegons que han passat des de la mitja nit de l'1 de gener de 1970 UTC. Un dia té 86.400.000 milisegons. El rang de l'objecte de JavaScript <code>Date</code> és de -100.000.000 dies a 100.000.000 dies relatius a l'1 de gener de 1970 UTC.</li>
 <li>L'objecte de JavaScript <code>Date</code> proporciona el mateix comportament a totes les plataformes on s'utilitzi. El valor de temps es pot passar entre sistemes per a representar el mateix moment del temps i si s'utilitza per a crear un objecte que contingui l'hora local, aquest objecte representarà l'equivalent al temps local.</li>
 <li>Alguns dels mètodes de l'objecte de JavaScript <code>Date</code> soporten temps en UTC (universal) i temps local. UTC, també conegut com a Greenwhich Mean Time (GMT), fa referència al temps marcat pel World Time Standard. El temps local és el temps proporcionat per l'ordinador on s'executa el JavaScript.</li>
 <li>Si s'invoca la funció de JavaScript <code>Date</code> com una funció (és a dir, sense l'operador {{jsxref("Operators/new", "new")}}), aquesta retornarà una string representant la data i hora actual.</li>
</ul>

<h2 id="Properties" name="Properties">Propietats</h2>

<dl>
 <dt>{{jsxref("Date.prototype")}}</dt>
 <dd>Permet afegir propietats a l'objecte de JavaScript <code>Date</code>.</dd>
 <dt><code>Date.length</code></dt>
 <dd>El valor de <code>Date.length</code> és 7. Aquest és el nombre de arguments que el constructor accepta.</dd>
</dl>

<div>{{jsOverrides("Function", "properties", "prototype")}}</div>

<h2 id="Methods" name="Methods">Mètodes</h2>

<dl>
 <dt>{{jsxref("Date.now()")}}</dt>
 <dd>Retorna el valor numèric corresponent al temps actual - el nombre de milisegons que han passat des de l'1 de gener de 1970 00:00:00 UTC.</dd>
 <dt>{{jsxref("Date.parse()")}}</dt>
 <dd>Interpreta un string que representa una data i retorna el nombre de milisegons des de l'1 de gener de 1970 00:00:00 UTC.</dd>
 <dt>{{jsxref("Date.UTC()")}}</dt>
 <dd>Accepta els mateixos paràmetres que el constructor (és a dir, de 2 a 7) i retorna le nombre de milisegons des de l'1 de gener de 1970 00:00:00 UTC.</dd>
</dl>

<div>{{jsOverrides("Function", "Methods", "now", "parse", "UTC")}}</div>

<h2 id="Date_instances" name="Date_instances">Instàncies de JavaScript <code>Date</code></h2>

<p>Totes les instàncies de <code>Date</code> hereten de {{jsxref("Date.prototype")}}. L'objecte prototipus del constructor <code>Date</code> pot ser modificat per a afectar a totes les instàncies de <code>Date</code>.</p>

<h3 id="Mètodes_de_Date.prototype">Mètodes de Date.prototype</h3>

<div>{{page('/ca/docs/Web/JavaScript/Reference/Global_Objects/Date/prototype', 'Methods')}}</div>

<h2 id="Examples" name="Examples">Exemples</h2>

<h3 id="Example:_Several_ways_to_assign_dates" name="Example:_Several_ways_to_assign_dates">Exemple: Vàries formes de crear un objecte de tipus <code>Date</code></h3>

<p>Els següents exemples mostren diverses maneres de crear dates a JavaScript:</p>

<pre class="brush: js">var today = new Date();
var birthday = new Date('December 17, 1995 03:24:00');
var birthday = new Date('1995-12-17T03:24:00');
var birthday = new Date(1995, 11, 17);
var birthday = new Date(1995, 11, 17, 3, 24, 0);
</pre>

<h3 id="Example:_Two_digit_years_map_to_1900_-_1999" name="Example:_Two_digit_years_map_to_1900_-_1999">Exemple: Dos dígits per representar els anys 1900 a 1999</h3>

<p>Per a crear i obtindre dates entre els anys 0 i 99 es recomana emprar els mètodes {{jsxref("Date.prototype.setFullYear()")}} i {{jsxref("Date.prototype.getFullYear()")}}.</p>

<pre class="brush: js">var date = new Date(98, 1); // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)

// Deprecated method, 98 maps to 1998 here as well
date.setYear(98);           // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)

date.setFullYear(98);       // Sat Feb 01 0098 00:00:00 GMT+0000 (BST)
</pre>

<h3 id="Example:_Calculating_elapsed_time" name="Example:_Calculating_elapsed_time">Exemple: Calcular el temps passat</h3>

<p>Els exemples següents mostren com determinar el temps passat entre dues dates a JavaScript:</p>

<pre class="brush: js">// utilitzant objectes Date
var start = Date.now();

// L'event a cronometra va aquí:
doSomethingForALongTime();
var end = Date.now();
var elapsed = end - start; // temps transcorregut en milisegons
</pre>

<pre class="brush: js">// utilitzant mètodes que formen part del sistema
var start = new Date();

// the event to time goes here:
doSomethingForALongTime();
var end = new Date();
var elapsed = end.getTime() - start.getTime(); // temps transcorregut en milisegons
</pre>

<pre class="brush: js">// cronometra una funció i retorna el que retorni
function printElapsedTime(fTest) {
  var nStartTime = Date.now(),
      vReturn = fTest(),
      nEndTime = Date.now();

  console.log('Temps transcorregut: ' + String(nEndTime - nStartTime) + ' miliseconds');
  return vReturn;
}

yourFunctionReturn = printElapsedTime(yourFunction);
</pre>

<div class="note">
<p><strong>Nota:</strong> En navegadors que suporten la característica de temps en alta resolució de la {{domxref("window.performance", "API d'Alt Rendiment Web", "", 1)}}, {{domxref("Performance.now()")}} pot proporcionar mesures de temps més concises i fiables pel temps transcorregut que {{jsxref("Date.now()")}}.</p>
</div>

<h2 id="Especificacions">Especificacions</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Especificació</th>
   <th scope="col">Estat</th>
   <th scope="col">Comentaris</th>
  </tr>
  <tr>
   <td>ECMAScript 1a Edició.</td>
   <td>Standard</td>
   <td>Definició inicial. Implementat a JavaScript 1.1.</td>
  </tr>
  <tr>
   <td>{{SpecName('ES5.1', '#sec-15.9', 'Date')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td> </td>
  </tr>
  <tr>
   <td>{{SpecName('ES6', '#sec-date-objects', 'Date')}}</td>
   <td>{{Spec2('ES6')}}</td>
   <td> </td>
  </tr>
 </tbody>
</table>

<h2 id="Compatibilitat_amb_navegadors">Compatibilitat amb navegadors</h2>

<div>{{CompatibilityTable}}</div>

<div id="compat-desktop">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Característica</th>
   <th>Chrome</th>
   <th>Firefox (Gecko)</th>
   <th>Internet Explorer</th>
   <th>Opera</th>
   <th>Safari</th>
  </tr>
  <tr>
   <td>Suport bàsic</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
 </tbody>
</table>
</div>

<div id="compat-mobile">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Característica</th>
   <th>Android</th>
   <th>Chrome for Android</th>
   <th>Firefox Mobile (Gecko)</th>
   <th>IE Mobile</th>
   <th>Opera Mobile</th>
   <th>Safari Mobile</th>
  </tr>
  <tr>
   <td>Suport bàsic</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
 </tbody>
</table>
</div>

<h3 id="Informes_de_compatiblitat_amb_navegadors">Informes de compatiblitat amb navegadors</h3>

<ul>
 <li><a href="https://gist.github.com/2312309">4/2012 punts essencials de Yaffle sobre problemes de compatibilitat amb navegadors dels mètodes <code>toISOString</code>/<code>fromISOString</code>/Native <code>Date.parse</code></a></li>
 <li><a href="http://dygraphs.com/date-formats.html">3/14/2012 blog de danvk Comparant FF/IE/Chrome en l'interpretació de dates com a strings</a></li>
</ul>

<h3 id="Notes_específiques_de_Internet_Explorer">Notes específiques de Internet Explorer</h3>

<p>Internet Explorer 8 <a href="https://msdn.microsoft.com/en-us//library/ie/ff743760(v=vs.94).aspx">no suporta el format de dates ISO8601</a>.</p>