2012-07-05 37 views
11

Sử dụng chức năng này, tôi nhận được sự khác biệt 7 ngày; làm thế nào tôi có thể kiểm tra xem một ngày trước ngày hiện tại?Xác thực nếu ngày trước ngày hiện tại

function validateDate() { 
    pickedDate = Date.parse("05-Jul-2012".replace(/-/g, " ")); 
    todaysDate = new Date(); 
    todaysDate.setHours(0, 0, 0, 0); 
    dateDifference = Math.abs(Number(todaysDate) - pickedDate); 
    //7 Days=604800000ms 
    if (dateDifference > 604800000) { 
     return false; 
    } else { 
     return true; 
    } 
} 
+0

Tôi không hiểu câu hỏi. – woz

+0

nếu người dùng nhập ngày trước ngày của ngày hiện tại thì tôi phải tạo ra cảnh báo. – John

+0

xem ngày hôm nay là 05-Jul-2012 nếu anh ta chọn 04-Jul-2012 hoặc trước 04 tháng 6 sau đó tôi phải tạo cảnh báo – John

Trả lời

22

Bạn có thể so sánh trực tiếp cả ngày như

return pickedDate <= todaysDate 

Đối với chính xác so sánh ngày xem xét mili giây, bạn có thể sử dụng JavaScript getMilliseconds() Method

Bạn có thể phân tích ngày như bạn đã làm:

pickedDatestr = "09-Apr-2010" 
var pickedDate = new Date(Date.parse(pickedDatestr.replace(/-/g, " "))) 
+0

ngày đã chọn của tôi có định dạng "dd-MMM-yyyy" cách tôi chuyển đổi ngày hôm nay theo định dạng "dd-MMM-yyyy" – John

+0

@John xem chỉnh sửa để tìm chuyển đổi ngày –

+0

nếu chọn ngày hôm nay ngày sau đó cũng nhận được see cảnh báo if (pickedDate> todaysDate) \t \t \t { \t \t \t \t return true; \t \t \t} \t \t \t khác \t \t \t { \t \t \t \t alert ("ngày hết hiệu lực."); \t \t \t \t trả về false; \t \t \t} – John

1

Thử chức năng này

function checkDate(day, month, year) 
{ 
    var regd = new RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})\$"); 

    var date = month + "/" + day + "/" + year; 
    var date = new Date(date); 
    var today = new Date(); 

    var vdob = regd.test(date); 

    var err_txt = "" ; 

    if(date.getDate() != day || (date.getTime()>today.getTime())) 
    { 
      err_txt+=("Please select a valid Date.\n") 
    } 

    return (err_txt); 
} 
1

Tested bao quát:

function isDateBeforeToday(date) { 
    return new Date(date.toDateString()) < new Date(new Date().toDateString()); 
} 

isDateBeforeToday(new Date(2016, 11, 16)); 
+0

Điều gì xảy ra nếu ngày được so sánh với ngày trước đó trong ngày cùng ngày? Nó có thể trong lý thuyết trở lại đúng, nếu bạn chạy điều này lúc 8 giờ tối và ngày được so sánh là lúc 2 giờ chiều. –

+1

@BarryChapman Bạn hoàn toàn đúng về điều đó! Mã này được giới hạn để so sánh các giá trị ngày nguyên chỉ (theo yêu cầu của tác giả). So sánh các datetimes sẽ là một trường hợp sử dụng khác nhau, có thể được giải quyết với một so sánh ngày chuẩn (dateA> dateB). –

0

Sau đây sẽ kiểm tra xem một ngày xảy ra trước ngày hôm nay:

function isBeforeToday(){ 
    var today = new Date((new Date()).toString().substring(0,15)); 
    return date < today; 
} 

này hoạt động bằng cách tạo ra một đối tượng ngày mới sau khi tước tất cả các thông tin thời gian từ của nó chuỗi ngày tương ứng:

Tue Mar 06 2018 16:33:15 GMT-0500 (EST) ->Tue Mar 06 2018 ->Tue Mar 06 2018 00:00:00 GMT-0500 (EST)

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