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
252
253
254
255
256
257
258
259
260
|
---
title: Date
slug: Web/JavaScript/Reference/Global_Objects/Date
tags:
- Date
- JavaScript
- Vietnamese
translation_of: Web/JavaScript/Reference/Global_Objects/Date
---
<div>{{JSRef}}</div>
<p>Tạo ra một thể hiện JavaScript <strong>Date</strong> đại diện cho một khoảnh khắc trong thời gian. Đối tượng ngày được dựa trên giá trị thời gian là số mili giây kể từ ngày 1 tháng 1 năm 1970 UTC.</p>
<h2 id="Cú_pháp">Cú pháp</h2>
<pre class="syntaxbox">new Date();
new Date(<var>value</var>);
new Date(<var>dateString</var>);
new Date(<var>year</var>, <var>month</var>[, <var>date</var>[, <var>hours</var>[, <var>minutes</var>[, <var>seconds</var>[, <var>milliseconds</var>]]]]]);
</pre>
<div class="note">
<p><strong>Lưu ý:</strong> Đối tượng JavaScript Date chỉ có thể được khởi tạo bằng cách gọi JavaScript Date như một constructor: gọi nó như là một hàm thông thường (tức là không có toán tử {{jsxref ("Operators / new", "new")}}) sẽ trả về một chuỗi thay vì một tượng Date; không giống như các kiểu đối tượng JavaScript khác, đối tượng JavaScript Date không có cú pháp rút gọn.</p>
</div>
<h3 id="Các_tham_số">Các tham số</h3>
<div class="note">
<p><strong>Chú ý:</strong> Trường hợp Date được gọi như một hàm khởi tạo với nhiều hơn một đối số, nếu các giá trị lớn hơn phạm vi hợp lý của chúng (ví dụ: 13 được cung cấp như là giá trị tháng hoặc 70 cho giá trị phút) thì giá trị liền kề sẽ được điều chỉnh. Ví dụ, <code>new Date(2013, 13, 1)</code> tương đương với <code>new Date(2014, 1, 1)</code>, cả hai đều tạo ra một ngày cho <code>2014-02-01</code> (lưu ý rằng tháng này là 0). Tương tự cho các giá trị khác: <code>new Date(2013, 2, 1, 0, 70)</code> tương đương với <code>new Date(2013, 2, 1, 1, 10)</code> mà cả hai đều tạo ra một ngày cho <code>2013-03-01T01:10:00</code>.</p>
</div>
<div class="note">
<p><strong>Chú ý:</strong> Trường hợp Date được gọi như một hàm khởi tạo với nhiều hơn một đối số, các đối số xác định đại diện cho thời gian địa phương. Nếu UTC là mong muốn, sử dụng Date mới ({{jsxref ("Date.UTC ()", "Date.UTC (...)")}}) với cùng một đối số.</p>
</div>
<dl>
<dt><code>value</code></dt>
<dd>Giá trị số nguyên đại diện cho số mili giây kể từ 01/01/1970-00:00:00 UTC.</dd>
<dt><code>dateString</code></dt>
<dd>Giá trị chuỗi đại diện cho một ngày. Chuỗi phải ở định dạng được công nhận bới phương thức {{jsxref("Date.parse()")}}.
<div class="note">
<p><strong>Lưu ý:</strong> Việc phân tách chuỗi ngày với constructor <code>Date</code> (và <code>Date.parse</code>, chúng là tương đương) đôi khi không như mong muốn do sự khác biệt và sự không nhất quán của trình duyệt. Hỗ trợ cho các chuỗi định dạng RFC 2822 chỉ là theo quy ước. Hỗ trợ các định dạng ISO 8601 khác với chuỗi "chỉ có ngày" (ví dụ: "1970-01-01") được coi như là UTC chứ không phải địa phương.</p>
</div>
</dd>
<dt><code>year</code></dt>
<dd>Giá trị số nguyên đại diện cho năm. Các giá trị từ 0 đến 99 ứng với các năm từ 1900 đến 1999.</dd>
<dt><code>month</code></dt>
<dd>Giá trị số nguyên đại diện cho tháng, bắt đầu với 0 cho Tháng Một đến 11 cho Tháng Mười Hai.</dd>
<dt><code>date</code></dt>
<dd>Tùy chọn. Giá trị số nguyên đại diện cho ngày trong tháng.</dd>
<dt><code>hours</code></dt>
<dd>Tùy chọn. Giá trị số nguyên đại diện cho giờ trong ngày.</dd>
<dt><code>minutes</code></dt>
<dd>Tùy chọn. Giá trị số nguyên đại diện cho phần phút của một thời gian.</dd>
<dt><code>seconds</code></dt>
<dd>Tùy chọn. Giá trị số nguyên đại diện cho phần giây của một thời gian.</dd>
<dt><code>milliseconds</code></dt>
<dd>Tùy chọn. Giá trị số nguyên đại diện cho phần mili giây của một thời gian.</dd>
</dl>
<h2 id="Mô_tả">Mô tả</h2>
<ul>
<li>Nếu không có các đối số được cung cấp, các hàm khởi tạo tạo đối tượng JavaScript <code>Date</code> với ngày và giờ hiện tại theo các cài đặt hệ thống.</li>
<li>Nếu có ít nhất hai đối số được cung cấp, thiếu các đối số được đặt thành 1 (nếu thiếu ngày) hoặc 0 cho tất cả các đối số khác.</li>
<li>Ngày JavaScript được dựa trên giá trị thời gian là mili giây kể từ nửa đêm 01 tháng 1 năm 1970 UTC. Một ngày giữ 86.400.000 mili giây. Phạm vi đối tượng JavaScript <code>Date</code> là -100.000.000 ngày đến 100.000.000 ngày liên quan đến ngày 01 tháng 1 năm 1970 UTC.</li>
<li>Đối tượng JavaScript Date cung cấp hành vi thống nhất giữa các nền tảng. Giá trị thời gian có thể được truyền giữa các hệ thống để tạo ra một ngày đại diện cho cùng một thời điểm trong thời gian.</li>
<li>Đối tượng JavaScript <code>Date</code> hỗ trợ một số phương pháp UTC (phổ quát), cũng như các phương pháp thời gian địa phương. UTC, còn được gọi là <em>Greenwich Mean Time</em> (GMT), nghĩa là thời gian theo World Time Standard (Tiêu chuẩn Thời gian Thế giới). Thời gian địa phương là thời gian được biết đến với máy tính nơi thực hiện lệnh JavaScript.</li>
<li>Gọi JavaScript <code>Date</code> như một hàm (nghĩa là không có toán tử {{jsxref("Operators/new", "new")}}) sẽ trả về một chuỗi đại diện cho ngày và giờ hiện tại.</li>
</ul>
<h2 id="Các_thuộc_tính">Các thuộc tính</h2>
<dl>
<dt>{{jsxref("Date.prototype")}}</dt>
<dd>Cho phép thêm thuộc tính vào một đối tượng JavaScript <code>Date</code>.</dd>
<dt><code>Date.length</code></dt>
<dd>Giá trị của <code>Date.length</code> là 7. Đây là số lượng các đối số được xử lý bởi hàm khởi tạo.</dd>
</dl>
<h2 id="Các_phương_thức">Các phương thức</h2>
<dl>
<dt>{{jsxref("Date.now()")}}</dt>
<dd>Trả về giá trị số tương ứng với thời gian hiện tại - số mili giây trôi qua kể từ ngày 1 tháng 1 năm 1970, 00:00:00, giờ UTC, với giây phút nhuận được bỏ qua.</dd>
<dt>{{jsxref("Date.parse()")}}</dt>
<dd>Phân tích cú pháp của một chuỗi đại diện ngày tháng và trả về số mili giây kể từ ngày 1 tháng 1 năm 1970, 00:00:00, giờ UTC, với giây phút nhuận được bỏ qua.
<div class="note">
<p><strong>Note:</strong> Việc phân tách cú pháp với Date.parse rất không chính xác do sự khác biệt giữa trình duyệt và sự không nhất quán..</p>
</div>
</dd>
<dt>{{jsxref("Date.UTC()")}}</dt>
<dd>Chấp nhận các tham số giống với dạng dài nhất của hàm khởi tạo (tức là 2 đến 7) và trả về số mili giây kể từ ngày 1 tháng 1 năm 1970, 00:00:00 giờ UTC, với giây phút nhuận được bỏ qua.</dd>
</dl>
<h2 id="Thể_hiện_của_JavaScript_Date">Thể hiện của JavaScript <code>Date</code></h2>
<p>Tất cả thể hiện của <code>Date</code> kế thừa từ {{jsxref("Date.prototype")}}. Đối tượng nguyên mẫu của hàm khởi tạo <code>Date</code> có thể được sửa đổi để ảnh hưởng đến tất cả thể hiện của <code>Date</code>.</p>
<h3 id="Date.prototype_Methods">Date.prototype Methods</h3>
<div>{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/prototype', 'Methods')}}</div>
<h2 id="Các_ví_dụ">Các ví dụ</h2>
<h3 id="Một_số_cách_để_tạo_một_đối_tượng_Date">Một số cách để tạo một đối tượng <code>Date</code></h3>
<p>Các ví dụ sau đây cho thấy một số cách để tạo các ngày JavaScript:</p>
<div class="note">
<p><strong>Chú ý:</strong> Việc phân tích các chuỗi ngày với constructor Date (và Date.parse, chúng là tương đương) rất không chính xác do sự khác biệt và sự không nhất quán của trình duyệt.</p>
</div>
<pre class="brush: js">var today = new Date();
var birthday = new Date('October 30, 1996 15:27:08');
var birthday = new Date('1996-10-30T15:27:08');
var birthday = new Date(1996, 10, 30);
var birthday = new Date(1996, 10, 30, 15, 27, 8);
</pre>
<h3 id="Các_năm_hai_số_ứng_với_1900_-_1999">Các năm hai số ứng với 1900 - 1999</h3>
<p>Để tạo và lấy các ngày giữa các năm 0 đến 99 các phương thức {{jsxref("Date.prototype.setFullYear()")}} và {{jsxref("Date.prototype.getFullYear()")}} nên được sử dụng.</p>
<pre class="brush: js">var date = new Date(98, 1); // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT).
// Phương thức bị phản đối, 98 ứng với 1998 ở đây cũng vậy.
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="Tính_thời_gian_trôi_qua">Tính thời gian trôi qua</h3>
<p>Các ví dụ sau chỉ ra cách xác định thời gian trôi qua giữa hai ngày JavaScript trong mili giây.</p>
<p>Do những ngày dài khác nhau (do thay đổi ánh sáng ban ngày), tháng và năm, thể hiện thời gian trôi qua theo đơn vị lớn hơn giờ, phút và giây đòi hỏi phải giải quyết một số vấn đề và cần được nghiên cứu kỹ trước khi cố gắng thử.</p>
<pre class="brush: js">// using Date objects
var start = Date.now();
// the event to time goes here:
doSomethingForALongTime();
var end = Date.now();
var elapsed = end - start; // elapsed time in milliseconds
</pre>
<pre class="brush: js">// using built-in methods
var start = new Date();
// the event to time goes here:
doSomethingForALongTime();
var end = new Date();
var elapsed = end.getTime() - start.getTime(); // elapsed time in milliseconds
</pre>
<pre class="brush: js">// to test a function and get back its return
function printElapsedTime(fTest) {
var nStartTime = Date.now(),
vReturn = fTest(),
nEndTime = Date.now();
console.log('Elapsed time: ' + String(nEndTime - nStartTime) + ' milliseconds');
return vReturn;
}
yourFunctionReturn = printElapsedTime(yourFunction);
</pre>
<div class="note">
<p><strong>Chú ý:</strong> Trong các trình duyệt hỗ trợ {{domxref("window.performance", "API Hiệu suất Web", "", 1)}} tính năng thời gian có độ phân giải cao, {{domxref("Performance.now()")}} có thể cung cấp các phép đo đáng tin cậy và chính xác về thời gian trôi qua hơn {{jsxref("Date.now()")}}.</p>
</div>
<h2 id="Thông_số_kỹ_thuật">Thông số kỹ thuật</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Đặc điểm kỹ thuật</th>
<th scope="col">Trạng thái</th>
<th scope="col">Chú thích</th>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-date-objects', 'Date')}}</td>
<td>{{Spec2('ESDraft')}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName('ES6', '#sec-date-objects', 'Date')}}</td>
<td>{{Spec2('ES6')}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName('ES5.1', '#sec-15.9', 'Date')}}</td>
<td>{{Spec2('ES5.1')}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName('ES1')}}</td>
<td>{{Spec2('ES1')}}</td>
<td>Định nghĩa ban đầu. Được thực hiện trong JavaScript 1.1.</td>
</tr>
</tbody>
</table>
<h2 id="Khả_năng_tương_thích_trình_duyệt">Khả năng tương thích trình duyệt</h2>
<div>{{CompatibilityTable}}</div>
<div id="compat-desktop">
<table class="compat-table">
<tbody>
<tr>
<th>Đặc tính</th>
<th>Chrome</th>
<th>Firefox (Gecko)</th>
<th>Internet Explorer</th>
<th>Opera</th>
<th>Safari</th>
</tr>
<tr>
<td>Hỗ trợ cơ bản</td>
<td>{{CompatVersionUnknown}} [1]</td>
<td>{{CompatVersionUnknown}} [1]</td>
<td>{{CompatVersionUnknown}} [2]</td>
<td>{{CompatVersionUnknown}} [1]</td>
<td>{{CompatVersionUnknown}} [1]</td>
</tr>
</tbody>
</table>
</div>
<div id="compat-mobile">
<table class="compat-table">
<tbody>
<tr>
<th>Đặc tính</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>Hỗ trợ cơ bản</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
</tr>
</tbody>
</table>
</div>
<p>[1] Một số trình duyệt có thể gặp sự cố khi phân tích ngày tháng: <a href="http://dygraphs.com/date-formats.html">3/14/2012 blog from danvk Comparing FF/IE/Chrome on Parsing Date Strings</a>.</p>
<p>[2] <a href="https://msdn.microsoft.com/en-us//library/ie/ff743760(v=vs.94).aspx">ISO8601 Date Format is not supported</a> Trong Internet Explorer 8, và các phiên bản khác có thể có <a href="http://dygraphs.com/date-formats.html">vấn đề chuyển đổi ngày tháng</a>.</p>
|