Determining the Number of Days in a Month with Javascript
Sunday, 1. November 2009, 15:18:57
Rất may là con calendar của tác giả Alf Magne Kalleland đã xử lý việc focus ngày nếu text field đã có giá trị nên việc của tôi lúc này khá nhàn hạ:
- Nếu textfield đã có giá trị rồi thì ko làm gì cả
- Nếu chưa có:
+ Lấy ngày hiện tại & cộng thêm 1 đơn vị
+ Nếu giá trị vừa cộng > tổng số ngày trong tháng hiện tại thì tăng tháng lên 1 đơn vị & ngày hiện tại = 1
+ Nếu tháng vừa cộng > 12 thì tăng năm hiện tại lên 1, ngày & tháng hiện tại = 1
Cái khó ở đây chính việc xác định tổng số ngày trong tháng bằng Javascript. Khó ở đây không phải thuật toán, khó ở đây chỉ đơn giản là làm thế nào để viết...càng ngắn càng tốt.
Nếu làm theo kiểu như trong các sách họp lập trình hoặc trong trường học thì sẽ phải if else (switch case) các tháng 30 ngày (4, 6, 9, 11), tháng có 31 ngày (1, 3, 5, 7, 8, 10, 12) và tháng 2 có 28 ngày (năm nhuận sẽ là 29). Ở đây lại phải xác định năm nhuận là năm như thế nào (chia hết cho 400), dài dòng ghê
Đối tượng Date của Javascript cho quá tải tham số date truyền vào & sẽ tự động tính toán số dư ngày thừa ra đó theo ngày hiện tại. Do đó để tính số ngày trong 1 tháng bằng Javascript chỉ cần dùng 1 dòng sau:
function daysInMonth(iMonth, iYear)
{
return 32 - new Date(iYear, iMonth, 32).getDate();
}
Keke... vậy là task 1 giờ đã được giải quyết trong vòng chưa đầy 5'. Suỵt, bí mật
Mirror: http://donamkhanh.com/2009/11/01/determining-the-number-of-days-in-a-month-with-javascript.html










dungnh # 1. November 2009, 16:25
Vậy hàm trên có thể viết thành:
return new Date( iYear, iMonth + 1, 0 ).getDate();
namkhanh # 2. November 2009, 02:34
dial911 # 12. November 2009, 09:11
dial911 # 18. November 2009, 01:04
zendobk # 20. November 2009, 03:46
@anh Nam Khánh: anh là coder hả
namkhanh # 20. November 2009, 15:50
@zendobk: anh là web developer