2012-03-13 69 views
14

Được cung cấp dayNumber là từ 0..6 đại diện cho Monday..Sunday tương ứng.Cách lấy ngày trong tuần từ số ngày trong Javascript?

Các đối tượng Date/String có thể được sử dụng để lấy ngày trong tuần từ dayNumber không?

+0

bản sao có thể có của [cách lấy ngày từ một ngày cụ thể bằng javascript] (http://stackoverflow.com/questions/495644/how-to-get-the-day-from-a-particular-date- sử dụng-javascript) – bernie

+0

[Ngày MDN()] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date) – epascarello

+0

bản sao có thể có của [Javascript: Cách lấy ngày trong tuần và tháng của y tai?] (http://stackoverflow.com/questions/4822852/javascript-how-to-get-the-day-of-week-and-the-month-of-the-year) –

Trả lời

22

này sẽ cung cấp cho bạn một ngày dựa trên các chỉ số bạn vượt qua:

var weekday=new Array(7); 
weekday[0]="Monday"; 
weekday[1]="Tuesday"; 
weekday[2]="Wednesday"; 
weekday[3]="Thursday"; 
weekday[4]="Friday"; 
weekday[5]="Saturday"; 
weekday[6]="Sunday"; 
console.log("Today is " + weekday[3]); 

Đầu ra "Hôm nay là thứ năm"

Bạn có thể alse có được những ngày chỉ số hiện tại từ JavaScript với getDay() (tuy nhiên trong này phương thức, Chủ nhật là 0, Thứ Hai là 1, v.v.):

var d=new Date(); 
console.log(d.getDay()); 

Đầu ra 1 khi đó là thứ Hai.

3
/** 
* I convert a day string to an number. 
* 
* @method dayOfWeekAsInteger 
* @param {String} day 
* @return {Number} Returns day as number 
*/ 
function dayOfWeekAsInteger(day) { 
    return ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"].indexOf(day); 
} 
15

Mã này là phiên bản sửa đổi của những gì được nêu ở trên. Nó trả về chuỗi đại diện cho ngày thay vì

/** 
* Converts a day number to a string. 
* 
* @method dayOfWeekAsString 
* @param {Number} dayIndex 
* @return {Number} Returns day as number 
*/ 
function dayOfWeekAsString(dayIndex) { 
    return ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"][dayIndex]; 
} 

Ví dụ

dayOfWeekAsString(0) returns "Monday" 
5

này sẽ bổ sung thêm một chức năng getDayOfWeek() như là một nguyên mẫu đến ngày lớp JavaScript.

Date.prototype.getDayOfWeek = function(){ 
    return ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][ this.getDay() ]; 
}; 
27

Một thanh lịch hơn nhiều cách cho phép bạn cũng hiển thị các ngày trong tuần bởi locale nếu bạn chọn có sẵn bắt đầu từ phiên bản mới nhất của kịch bản ECMA và đang chạy trong tất cả các trình duyệt mới nhất và Node.js:

console.log(new Date().toLocaleString('en-us', { weekday: 'long' })); 
+0

Chỉ là cảnh báo cho bất kỳ ai bằng cách này, nó hoạt động tốt, nhưng đây là một cách rất nặng để có được điều này. Chỉ sử dụng nó khi bạn có vài ngày mà bạn cần phải chuyển đổi và không phải trên một ứng dụng nodejs phía sever. Nếu bạn chạy nó trên 10k ngày, phải mất một thời gian dài và có một rò rỉ bộ nhớ. – Omer

+0

@omer, bạn có gặp phải vấn đề với nhóm nút không? Tôi nghĩ rằng tất cả chúng ta đều có thể hưởng lợi từ việc này nhanh hơn và không bị rò rỉ bộ nhớ. –

+1

Không, tôi chưa có nhưng tôi sẽ mở nó ngay bây giờ, ý tưởng hay. Tôi quản lý để tái tạo nó với một vòng lặp đơn giản trong khi chạy 10k lần. Tôi không chắc chắn nếu nó thực sự là một lỗi hoặc chỉ là chức năng này là nặng về tài nguyên cho trường hợp sử dụng cụ thể này. – Omer

Các vấn đề liên quan