Làm cách nào để so sánh thời gian UTC trong JavaScript?

So sánh ngày là một tính năng định kỳ trong bất kỳ ứng dụng nào. Dù là cùng ngày, sớm hơn hay muộn hơn ngày kia. May mắn thay, JavaScript đã có sẵn các tính năng để làm điều đó

Chúng ta có thể so sánh các ngày bằng cách khởi tạo chúng như một đối tượng Date và sử dụng phương thức getTime[] với các toán tử so sánh. Thí dụ. ngày1. getTime[] === date2. dành thời gian[]

Tiếp tục đọc để được giải thích chi tiết

Giải thích cách so sánh ngày tháng

Nhiều lập trình viên khi cần thực hiện thao tác ngày tháng nào đó đã nghĩ ngay đến việc thêm Moment. js hoặc một thư viện tương tự khác, thường không biết rằng chỉ riêng JavaScript có thể xử lý rất tốt loại hoạt động này

Đối tượng Date trong JavaScript là cấu trúc lý tưởng để làm việc với ngày tháng. Nó có phương thức getTime[] trả về giá trị của một ngày cụ thể tính bằng mili giây và có thể được sử dụng rộng rãi để làm việc với ngày tháng, bất kể múi giờ hoặc định dạng

Phần phức tạp nhất là tìm các ví dụ liên quan đến định dạng ngày, đặc biệt đối với các định dạng như dd/mm/yyyy. Nhưng chúng ta sẽ sớm xem xét điều đó

Ví dụ mã dưới đây có lẽ là lý do tại sao bạn đến đây

// We initialize the Date[] object with the current date and time
const date1 = new Date[];
// We initialize a past date
const date2 = new Date['2018-04-07 12:30:00'];

// Let's see if the first date is equal, more recent or less recent than the second date
if [date1.getTime[] === date2.getTime[]] {
	console.log['The dates are equal'];
}
else if [date1.getTime[] > date2.getTime[]] {
	console.log[date1.toString[] + ' is more recent than ' + date2.toString[]];
}
else {
	console.log[date1.toString[] + ' is less recent than ' + date2.toString[]];
}

Thậm chí có thể tùy chọn sử dụng getTime[] trong một số trường hợp, nhưng nếu chúng ta so sánh hai đối tượng Date giống nhau, kết quả sẽ sai, e. g. [Ngày mới == Ngày mới]. Đó là lý do tại sao tôi luôn khuyên bạn nên sử dụng getTime[], để so sánh các giá trị bất kể các đối tượng có khác nhau hay không

Chúng tôi sử dụng ===, vì đây là cách chính xác để kiểm tra xem hai giá trị cùng loại có bằng nhau không. e. g. 1 === 1 [đúng], 1 === '1' [sai]

Chỉ so sánh thời gian

Nếu bạn cần so sánh hai lần, ví dụ kiểm tra nếu 2. 00 chiều lớn hơn 3. 00 giờ sáng, chỉ cần khởi tạo đối tượng Date với các ngày trong cùng một ngày

// Let's suppose the variables time1 and time2 come from an input
var time1 = '14:00';
var time2 = '03:00';

const date1 = new Date['2020-01-01 ' + time1];
const date2 = new Date['2020-01-01 ' + time2];

// Verify if the first time is equal, more recent or less recent than the second
if [date1.getTime[] === date2.getTime[]] {
	console.log['Both times are equal'];
}
else if [date1.getTime[] > date2.getTime[]] {
	console.log[time1 + ' is more recent than ' + time2];
}
else {
	console.log[time1 + ' is less recent than ' + time2];
}

Nếu bạn muốn biết sự khác biệt giữa hai ngày trả về ngày, tháng, năm, v.v. Tôi đã viết một bài báo khác về chủ đề này. https. //ricardometry. com/difference-between-dates-in-javascript

Ngày là loại dữ liệu thực sự phổ biến mà các nhà phát triển làm việc với. Từ dấu thời gian của một số hành động nhất định đến báo cáo, tính năng đăng ký và quyền truy cập trong thời gian giới hạn trong các hệ thống yêu cầu đăng ký - đôi khi chúng tôi phải so sánh ngày tháng

Nghĩa là, chúng ta so sánh xem một ngày là sau hay trước một ngày khác, nếu là ngày hôm nay, thì có bao nhiêu ngày giữa các ngày, v.v.

Trong bài viết này, chúng ta sẽ xem xét cách so sánh hai ngày trong JavaScript, giúp chúng ta suy luận xem một ngày là trước hay sau một ngày khác

Các nhà phát triển web thường sử dụng các gói bên ngoài [như Moment. js] để xử lý các hoạt động ngày giờ. Tuy nhiên, khi web hiện đại phát triển, JavaScript đã giới thiệu một hàm tạo đối tượng mới có tên là Date để xử lý các thao tác ngày giờ

Điều này có nghĩa là bạn không cần một thư viện bên ngoài để thực hiện các thao tác và kiểm tra thô sơ, điều này giúp thực hiện những việc này dễ dàng hơn trong Vanilla JS

Lớp Date thực sự dễ hiểu - nó chỉ lưu trữ thời gian Unix được tính bằng mili giây

Thời gian Unix được đo bằng số giây trôi qua kể từ kỷ nguyên Unix [00. 00. 00 UTC ngày 1 tháng 1 năm 1970], đây là một ngày hoàn toàn tùy ý

Mặc dù việc triển khai này có vẻ hơi đơn giản, nhưng việc bổ sung lớp Date là một cải tiến khá lớn, vì cuối cùng đã có một mức độ trừu tượng giữa nhà phát triển và ngày thô

Bây giờ, hãy xem xét các cách khác nhau để so sánh hai ngày bằng cách sử dụng các đối tượng Date

Chúng ta có thể sử dụng các toán tử so sánh như

6/11/2020 is greater than 7/8/2019
Both dates are equal
0 và
6/11/2020 is greater than 7/8/2019
Both dates are equal
1 hai đối tượng so sánh hai đối tượng Date và dưới mui xe, bộ đếm thời gian của chúng được so sánh một cách hiệu quả. Bạn đang so sánh hiệu quả hai bộ đếm số nguyên

function dateCompare[d1, d2]{
    const date1 = new Date[d1];
    const date2 = new Date[d2];

    if[date1 > date2]{
        console.log[`${d1} is greater than ${d2}`]
    } else if[date1 < date2]{
        console.log[`${d2} is greater than ${d1}`]
    } else{
        console.log[`Both dates are equal`]
    }
}

dateCompare["6/11/2020", "7/8/2019"]
dateCompare["01/01/2021", "01/01/2021"]

Kết quả này trong

6/11/2020 is greater than 7/8/2019
Both dates are equal

Như chúng ta có thể thấy, việc so sánh ngày tháng chỉ đơn giản là chuyển đổi các chuỗi được cung cấp thành các đối tượng Date và so sánh chúng với một toán tử so sánh thích hợp

Ghi chú. Các toán tử đẳng thức [

6/11/2020 is greater than 7/8/2019
Both dates are equal
4 và
6/11/2020 is greater than 7/8/2019
Both dates are equal
5] không hoạt động với các đối tượng Date, vì vậy chúng tôi không kiểm tra rõ ràng xem chúng có giống nhau không

Một cách khác để so sánh hai ngày là sử dụng phương pháp

6/11/2020 is greater than 7/8/2019
Both dates are equal
7 tích hợp sẵn

Phương thức

6/11/2020 is greater than 7/8/2019
Both dates are equal
7 trả về số mili giây đã trôi qua kể từ kỷ nguyên Unix. Ngoài ra, bạn có thể sử dụng các phương pháp,
6/11/2020 is greater than 7/8/2019
Both dates are equal
9,
function compareDates[d1, d2]{
    const date1 = new Date[d1];
    const date2 = new Date[d2];

    if[date1.getTime[] > date2.getTime[]]{
        console.log[`${d1} is greater than ${d2} in terms of milliseconds`]
    } else if[date1.getYear[] < date2.getYear[]]{
        console.log[`${d2} is greater than ${d1} in terms of years`]
    } else if[date1.getDate[] === date2.getDate[]]{
        console.log[`Both dates are equal`]
    }
}

compareDates["9/10/1997", "9/10/2000"]
compareDates["11/11/2021", "11/1/2021"]
0,
function compareDates[d1, d2]{
    const date1 = new Date[d1];
    const date2 = new Date[d2];

    if[date1.getTime[] > date2.getTime[]]{
        console.log[`${d1} is greater than ${d2} in terms of milliseconds`]
    } else if[date1.getYear[] < date2.getYear[]]{
        console.log[`${d2} is greater than ${d1} in terms of years`]
    } else if[date1.getDate[] === date2.getDate[]]{
        console.log[`Both dates are equal`]
    }
}

compareDates["9/10/1997", "9/10/2000"]
compareDates["11/11/2021", "11/1/2021"]
1,
function compareDates[d1, d2]{
    const date1 = new Date[d1];
    const date2 = new Date[d2];

    if[date1.getTime[] > date2.getTime[]]{
        console.log[`${d1} is greater than ${d2} in terms of milliseconds`]
    } else if[date1.getYear[] < date2.getYear[]]{
        console.log[`${d2} is greater than ${d1} in terms of years`]
    } else if[date1.getDate[] === date2.getDate[]]{
        console.log[`Both dates are equal`]
    }
}

compareDates["9/10/1997", "9/10/2000"]
compareDates["11/11/2021", "11/1/2021"]
2 và
function compareDates[d1, d2]{
    const date1 = new Date[d1];
    const date2 = new Date[d2];

    if[date1.getTime[] > date2.getTime[]]{
        console.log[`${d1} is greater than ${d2} in terms of milliseconds`]
    } else if[date1.getYear[] < date2.getYear[]]{
        console.log[`${d2} is greater than ${d1} in terms of years`]
    } else if[date1.getDate[] === date2.getDate[]]{
        console.log[`Both dates are equal`]
    }
}

compareDates["9/10/1997", "9/10/2000"]
compareDates["11/11/2021", "11/1/2021"]
3 để xác định rõ hơn và so sánh thông tin, trong số các phương pháp có tên tương tự khác

Ngoài ra, bạn cũng có thể sử dụng

function compareDates[d1, d2]{
    const date1 = new Date[d1];
    const date2 = new Date[d2];

    if[date1.getTime[] > date2.getTime[]]{
        console.log[`${d1} is greater than ${d2} in terms of milliseconds`]
    } else if[date1.getYear[] < date2.getYear[]]{
        console.log[`${d2} is greater than ${d1} in terms of years`]
    } else if[date1.getDate[] === date2.getDate[]]{
        console.log[`Both dates are equal`]
    }
}

compareDates["9/10/1997", "9/10/2000"]
compareDates["11/11/2021", "11/1/2021"]
4,
function compareDates[d1, d2]{
    const date1 = new Date[d1];
    const date2 = new Date[d2];

    if[date1.getTime[] > date2.getTime[]]{
        console.log[`${d1} is greater than ${d2} in terms of milliseconds`]
    } else if[date1.getYear[] < date2.getYear[]]{
        console.log[`${d2} is greater than ${d1} in terms of years`]
    } else if[date1.getDate[] === date2.getDate[]]{
        console.log[`Both dates are equal`]
    }
}

compareDates["9/10/1997", "9/10/2000"]
compareDates["11/11/2021", "11/1/2021"]
5,
function compareDates[d1, d2]{
    const date1 = new Date[d1];
    const date2 = new Date[d2];

    if[date1.getTime[] > date2.getTime[]]{
        console.log[`${d1} is greater than ${d2} in terms of milliseconds`]
    } else if[date1.getYear[] < date2.getYear[]]{
        console.log[`${d2} is greater than ${d1} in terms of years`]
    } else if[date1.getDate[] === date2.getDate[]]{
        console.log[`Both dates are equal`]
    }
}

compareDates["9/10/1997", "9/10/2000"]
compareDates["11/11/2021", "11/1/2021"]
6,
function compareDates[d1, d2]{
    const date1 = new Date[d1];
    const date2 = new Date[d2];

    if[date1.getTime[] > date2.getTime[]]{
        console.log[`${d1} is greater than ${d2} in terms of milliseconds`]
    } else if[date1.getYear[] < date2.getYear[]]{
        console.log[`${d2} is greater than ${d1} in terms of years`]
    } else if[date1.getDate[] === date2.getDate[]]{
        console.log[`Both dates are equal`]
    }
}

compareDates["9/10/1997", "9/10/2000"]
compareDates["11/11/2021", "11/1/2021"]
7, v.v. các phương thức trả về các mã định danh tạm thời đã cho, được phân vùng cụ thể cho UTC

Ghi chú. Với phương pháp này, bạn có thể sử dụng toán tử bình đẳng

Hãy xem một ví dụ

function compareDates[d1, d2]{
    const date1 = new Date[d1];
    const date2 = new Date[d2];

    if[date1.getTime[] > date2.getTime[]]{
        console.log[`${d1} is greater than ${d2} in terms of milliseconds`]
    } else if[date1.getYear[] < date2.getYear[]]{
        console.log[`${d2} is greater than ${d1} in terms of years`]
    } else if[date1.getDate[] === date2.getDate[]]{
        console.log[`Both dates are equal`]
    }
}

compareDates["9/10/1997", "9/10/2000"]
compareDates["11/11/2021", "11/1/2021"]

Kết quả này trong

9/10/2000 is greater than 09/10/1997 in terms of years
11/11/2021 is greater than 11/1/2021 in terms of milliseconds

Mặc dù vậy, vì chúng ta đang làm việc với các khối

function compareDates[d1, d2]{
    const date1 = new Date[d1];
    const date2 = new Date[d2];

    if[date1.getTime[] > date2.getTime[]]{
        console.log[`${d1} is greater than ${d2} in terms of milliseconds`]
    } else if[date1.getYear[] < date2.getYear[]]{
        console.log[`${d2} is greater than ${d1} in terms of years`]
    } else if[date1.getDate[] === date2.getDate[]]{
        console.log[`Both dates are equal`]
    }
}

compareDates["9/10/1997", "9/10/2000"]
compareDates["11/11/2021", "11/1/2021"]
8 và
function compareDates[d1, d2]{
    const date1 = new Date[d1];
    const date2 = new Date[d2];

    if[date1.getTime[] > date2.getTime[]]{
        console.log[`${d1} is greater than ${d2} in terms of milliseconds`]
    } else if[date1.getYear[] < date2.getYear[]]{
        console.log[`${d2} is greater than ${d1} in terms of years`]
    } else if[date1.getDate[] === date2.getDate[]]{
        console.log[`Both dates are equal`]
    }
}

compareDates["9/10/1997", "9/10/2000"]
compareDates["11/11/2021", "11/1/2021"]
9, nên một số câu lệnh không bao giờ được thực thi. Ví dụ,
9/10/2000 is greater than 09/10/1997 in terms of years
11/11/2021 is greater than 11/1/2021 in terms of milliseconds
0 và
9/10/2000 is greater than 09/10/1997 in terms of years
11/11/2021 is greater than 11/1/2021 in terms of milliseconds
1 có cùng ngày, nhưng
9/10/2000 is greater than 09/10/1997 in terms of years
11/11/2021 is greater than 11/1/2021 in terms of milliseconds
2, không cùng năm

Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó

Ví dụ, mã này

function compareDates[d1, d2]{
    const date1 = new Date[d1];
    const date2 = new Date[d2];
    
    if[date1.getDate[] === date2.getDate[]]{
        console.log[`Both dates are equal`]
    }
}

compareDates["09/10/1997", "9/10/2000"]

Sẽ dẫn đến

Both dates are equal

Vì chúng ta chỉ đang so sánh ngày, không tính đến năm

Phần kết luận

Trong bài viết này, chúng ta đã tìm hiểu sơ lược về cách JavaScript xử lý ngày tháng bằng cách sử dụng các đối tượng Date. Sau đó, chúng tôi đã giới thiệu cách so sánh ngày tháng trong JavaScript, lưu ý một số phương pháp hữu ích

Làm cách nào để có được thời gian UTC trong JavaScript?

Ngày JavaScript getUTCDate[] .

Làm cách nào để so sánh hai dấu thời gian trong JavaScript?

js có phương thức diff[] , cho biết sự khác biệt giữa hai ngày theo năm, tháng, ngày, giờ, phút, giây . Chúng ta có thể sử dụng đơn vị thứ hai trong trường hợp của mình để tìm sự khác biệt giữa hai ngày.

Làm cách nào để định dạng ngày UTC trong JavaScript?

var now = new Date[]; . var utc = new Date[now. getTime[] + ngay. getTimezoneOffset[] * 60000];

Làm cách nào để so sánh hai định dạng ngày khác nhau trong JavaScript?

Cách tiếp cận tốt hơn để so sánh giữa các ngày là sử dụng hàm getTime[] . Chức năng này cho phép chuyển đổi ngày thành giá trị số để so sánh trực tiếp chúng.

Chủ Đề