JavaScript: Đối tượng Date
JavaScript cung cấp cho ta đối tượng Date để thao tác với ngày tháng và thời gian. Tương tự như các đối tượng String và Array, ta có thể tạo nhiều thể hiện của đối tượng nếu cần.
Đối tượng Date cung cấp khá nhiều phương thức để cho phép lấy cũng như thiết lập các thông tin về ngày tháng và thời gian, trong đó ngay tháng là dựa trên ngày tháng của UNIX bắt đầu từ ngày 01/01/1970 (theo dạng giờ chuẩn quốc tế Greenwich Mean Time - GMT) và không hỗ trợ ngày tháng trước thời điểm này. Vì các chương trình JavaScript phía trình khác (client-side) chạy trên trình duyệt cho nên đối tượng Date sẽ trả về ngày tháng và thời gian local ra trình duyệt và không phải là thời gian và ngày tháng của server, do vậy nếu máy tính của ta không thiết lập đúng ngày tháng và thời gian thì kết quả hiển thị sẽ không đúng.
Lưu ý là giờ Greenwich Mean Time (GMT) bây giờ được gọi là giờ Universal Coordinate Time (UTC).
Nếu không có đối số nào được truyền tời hàm tạo của đối tượng Date thì nó sẽ trả về ngày tháng và thời gian local. Có năm định dạng có thể được truyền dưới dạng đối số bạn có thể thấy qua ví dụ dưới đây:
var Date = new Date(); // Hàm tạo trả về đối tượng Date.
var Date = new Date("July 4, 2004, 6:25:22");
var Date = new Date("July 4, 2004");
var Date = new Date(2004, 7, 4, 6, 25, 22);
var Date = new Date(2004, 7, 4);
var Date = new Date(Milliseconds);
Sử dụng các phương thức
Bảng dưới đây liệt kê khá nhiều các phương thức của đối tượng Date.
Phương thức |
Mô tả |
---|---|
getDate |
Trả về ngày trong tháng (1–31) |
getDay |
Trả về ngày trong tuần (0–6); 0 là chủ nhật (Sunday), 1 là Monday, ... |
getFullYear |
Trả về năm với 4 có số |
getHours |
Trả về giờ (0–23) |
getMilliseconds |
Trả về mini giây |
getMinutes |
Trả về phút (0-59) |
getMonth |
Trả về tháng (0–11); 0 là tháng 1, 1 là tháng 2, ... |
getSeconds |
Trả về giây (0–59) |
getTime |
Trả về số mini giây tính từ ngày 01-01-1970 |
getTimeZoneOffset |
Trả về độ lệch tính theo phút giữa giờ quốc tế UTC (Universal Coordinated Time) và giờ trên máy local, ví dụ như độ lệnh theo phút giữa giờ quốc tế với giờ Việt Nam là -420 |
getUTCDate() |
Trả về ngày trong tháng |
getUTDDay() |
Trả về ngày trong tuần được chuyển thành universal time |
get UTCFullYear() |
Trả về năm gồm 4 con số được chuyển thành universal time |
getUTCHours() |
Trả về giờ được chuyển thành universal time |
getUTCMilliseconds() |
Trả về millisecond được chuyển thành universal time |
parse() |
Chuyển chuỗi thời gian trong đối số thành mini giây tính từ ngày 01-01-1970 |
setDate(value) |
Thiết lập ngày của tháng (1–31) |
setFullYear() |
Thiết lập năm với 4 chữ số |
setHours() |
Thiết lập giờ trong ngày (0–23) |
setHours(hr,min,sec,msec) |
Thiết lập giờ local hoặc thời gian dạng UTC |
setMilliseconds |
Thiết lập mini giây |
setMinutes(min,sec, msec) |
Thiết lập phút theo giời gian local hoặc UTC |
setMonth(month,date) |
Thiết lập tháng |
setSeconds() |
Thiết lập giây |
setTime() |
Thiết lập thời gian mini giây tính từ ngày 01-01-1970 |
setUTCdate() |
Thiết lập ngày trong tháng dưới dạng universal time |
setUTCFullYear() |
Thiết lập năm gồm 4 con số dưới dạng universal time |
setUTCHours() |
Thiết lập giờ dạng universal time |
setUTCMilliseconds() |
Thiết lập millisecond dạng universal time |
setUTCMinutes() |
Thiết lập phút dạng universal time |
setUTCMonth() |
Thiết lập tháng dạng universal time |
setUTCSeconds() |
Thiết lập second dạng universal time |
setYear() |
Thiết lập năm dạng 2 con số tính từ 1900 (00–99) |
toGMTString() |
Trả về chuỗi ngày dạng universal format |
toLocaleString |
Trả về chuỗi thể hiện date và time dựa trên vị trí địa phương lấy từ máy tính, dạng như 10/09/99 12:43:22 |
toSource |
Trả về source của đối tượng Date |
toString |
Returns string representing date and time |
toUTCString |
Returns string representing date and time as 10/09/99 12:43:22 in universal time[*] |
UTC() |
Converts comma-delimited values to milliseconds[*] |
valueOf() |
Returns the equivalence of the Date object in milliseconds[*] |
Ví dụ:
<html>
<head><title>Time and Date</title></head>
<body bgcolor="lightblue"><h2>Date and Time</h2>
<script language="JavaScript">
1 var now = new Date(); //Tạo thể hiện của đối tượng Date
document.write("<font size='+1'>");
document.write("<b>Local time:</b> " + now + "<br>");
2 var hours=now.getHours();
3 var minutes=now.getMinutes();
4 var seconds=now.getSeconds();
5 var year=now.getFullYear();
document.write("The full year is " + year +"<br>");
document.write("<b>The time is:</b> " +
hours + ":" + minutes + ":" + seconds);
document.write("</font>");
</script>
</body>
</html>
GIẢI THÍCH
-
Tạo một thể hiện của đối tượng Date có tên now.
-
Tạo biến hours chứa giá trị trả về của phương thức getHours().
-
Tạo biến minutes chứa giá trị trả về của phương thức getMinutes().
-
Tạo biến seconds chứa giá trị trả về của phương thức getSeconds().
-
Tạo biến year chứa giá trị trả về của phương thức getFullYear()
Thao tác với Date and Time
JavaScript lưu trữ thông tin ngày tháng và thời gian theo dạng chuẩn là mini giây, vậy nên nếu bạn có nhiều tính toán phức tạp để giải quyết vấn đề thì bảng chuyển đổi thời gian dưới đây có thể giúp ích cho bạn.
Unit of Time |
Milliseconds |
|
---|---|---|
1 second |
1000 |
|
1 minute |
second * 60 |
(1000 * 60) |
1 hour |
minute * 60 |
(1000 * 60 * 60) |
1 day |
hour * 24 |
(1000 * 60 * 60 * 24 ) |
1 week |
day * 7 |
(1000 * 60 * 60 * 24 * 7 ) |
Ví dụ:
<html><head><title>Countdown 'till Christmas</title></head>
<body bgColor="#00FF99">
<font face="arial" size=5 color=red>
<script language="JavaScript">
1 var today = new Date();
2 var fullyear = today.getFullYear();
3 var future = new Date("December 25, "+ fullyear);
4 var diff = future.getTime() - today.getTime();
// Number of milliseconds
5 var days = Math.floor(diff / (1000 * 60 * 60 * 24 ));
// Convert to days
6 var str="Only <u>" + days + "</u> shopping days left
\'til Christmas! ";
document.write(str+"<br>");
</script>
</body>
</html>
GIẢI THÍCH
-
Tạo đối tượng mới của Date có tên today.
-
Phương thức getFullYear() trả về năm hiện tại.
-
Tạo một đối tượng Date khác có tên future chứa chuỗi ngày tháng.
-
Phương thức getTime() lấy độ lệnh theo mini giây giữa từng đối tượng với thời điểm gốc là 01-01-1970.
-
Dùng hàm flood() để lấy cận dưới.
-
Tạo biến chứa chuỗi thông tin hiển thị ra trình duyệt.
Tùy chỉnh đối tượng Date với thuộc tính nguyên mẫu
Đối tượng Date có một thuộc tính nguyên mẫu cho phép ta mở rộng khả năng của đối tượng. Ta có thể tùy chỉnh thời gian và ngày tháng bằng cách cung cấp các thuộc tính và phương thức mới mà nó sẽ được thừa kế từ tất cả các thể hiện của đối tượng this. Vì đối tượng Date cung cấp các phương thức trả về giá trị theo thời điểm 0, nên đôi khi ta có thể muốn thay thế điều này, ví dụ như trả về tháng là "January" thay vì 0, trả về ngày trong tuần là "Monday" thay vì 1, ...
Ví dụ:
<html><head><title>The Prototype Property</title>
<script language = "javascript">
// Customize the Date
1 function weekDay(){
2 var now = this.getDay();
3 var names = new Array(7);
names[0]="Sunday";
names[1]="Monday";
names[2]="Tuesday";
names[3]="Wednesday";
names[4]="Thursday";
names[5]="Friday";
names[6]="Saturday";
4 return(names[now]);
}
5 Date.prototype.DayOfWeek=weekDay;
</script>
</head>
<body bgcolor="pink">
<font face="arial" size="+1">
<center>
<script language="JavaScript">
6 var today=new Date();
7 document.write("Today is " + today.DayOfWeek() + ".<br>");
</script>
</body></html>
GIẢI THÍCH
-
Tạo một hàm có tên weekday().
-
Tạo một biến có tên now và được gán một số thể hiện ngày của tuần, trong đó 0 là chủ nhật (Sunday).
-
Tạo một mảng có tên names gồm 7 phần tử, mỗi phần tử được gán giá trị là là tên của ngày trong tuần.
-
Trả về giá trị của phần tử có chỉ số nằm trong biến now.
-
Tạo một phương thức prototype có tên DayOfWeek và được gán cho phương thức weekDay().
-
Tạo một đối tượng Date mới có tên today.
-
Gọi đến phương thức prototype đã được tạo ở dòng 5 và trả về chuỗi ngày tháng của đối tượng today.