Javascript so sánh ngày

So sánh ngày tháng trong javascript là một trong những từ khóa được gg search nhiều nhất về chủ đề so sánh ngày tháng trong javascript. Trong bài viết này, hostingvietnam.vn sẽ viết bài viết hướng dẫn so sánh ngày tháng trong javascript mới nhất 2020.

Bạn đang xem: So sánh ngày tháng trong javascript

bạn cũng có thể làm theo cách này.

if [dateFormat[first, "yyyy-mm-dd"] > dateFormat[second, "yyyy-mm-dd"]] { console.log["done"]; }

OR

if [dateFormat[first, "mm-dd-yyyy"] > dateFormat[second, "mm-dd-yyyy"]] { console.log["done"]; }

tôi sử dụng plugin sau cho dateFormat []

var dateFormat = function [] { var token = /d{1,4}|m{1,4}|yy[?:yy]?|[[HhMsTt]]\1?|[LloSZ]|"[^"]*"|'[^']*'/g, timezone = /\b[?:[PMCEA][SDP]T|[?:Pacific|Mountain|Central|Eastern|Atlantic] [?:Standard|Daylight|Prevailing] Time|[?:GMT|UTC][?:[-+]\d{4}]?]\b/g, timezoneClip = /[^-+\dA-Z]/g, pad = function [val, len] { val = String[val]; len = len || 2; while [val.length < len] val = "0" + val; return val; }; // Regexes and supporting functions are cached through closure return function [date, mask, utc] { var dF = dateFormat; // You can't provide utc if you skip other args [use the "UTC:" mask prefix] if [arguments.length == 1 && Object.prototype.toString.call[date] == "[object String]" && !/\d/.test[date]] { mask = date; date = undefined; } // Passing date through Date applies Date.parse, if necessary date = date ? new Date[date] : new Date; if [isNaN[date]] throw SyntaxError["invalid date"]; mask = String[dF.masks[mask] || mask || dF.masks["default"]]; // Allow setting the utc argument via the mask if [mask.slice[0, 4] == "UTC:"] { mask = mask.slice[4]; utc = true; } var _ = utc ? "getUTC" : "get", d = date[_ + "Date"][], D = date[_ + "Day"][], m = date[_ + "Month"][], y = date[_ + "FullYear"][], H = date[_ + "Hours"][], M = date[_ + "Minutes"][], s = date[_ + "Seconds"][], L = date[_ + "Milliseconds"][], o = utc ? 0 : date.getTimezoneOffset[], flags = { d: d, dd: pad[d], ddd: dF.i18n.dayNames[D], dddd: dF.i18n.dayNames[D + 7], m: m + 1, mm: pad[m + 1], mmm: dF.i18n.monthNames[m], mmmm: dF.i18n.monthNames[m + 12], yy: String[y].slice[2], yyyy: y, h: H % 12 || 12, hh: pad[H % 12 || 12], H: H, HH: pad[H], M: M, MM: pad[M], s: s, ss: pad[s], l: pad[L, 3], L: pad[L > 99 ? Math.round[L / 10] : L], t: H < 12 ? "a" : "p", tt: H < 12 ? "am" : "pm", T: H < 12 ? "A" : "P", TT: H < 12 ? "AM" : "PM", Z: utc ? "UTC" : [String[date].match[timezone] || [""]].pop[].replace[timezoneClip, ""], o: [o > 0 ? "-" : "+"] + pad[Math.floor[Math.abs[o] / 60] * 100 + Math.abs[o] % 60, 4], S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : [d % 100 - d % 10 != 10] * d % 10] }; return mask.replace[token, function [$0] { return $0 in flags ? flags[$0] : $0.slice[1, $0.length - 1]; }]; }; }[]; // Some common format strings dateFormat.masks = { "default": "ddd mmm dd yyyy HH:MM:ss", shortDate: "m/d/yy", mediumDate: "mmm d, yyyy", longDate: "mmmm d, yyyy", fullDate: "dddd, mmmm d, yyyy", shortTime: "h:MM TT", mediumTime: "h:MM:ss TT", longTime: "h:MM:ss TT Z", isoDate: "yyyy-mm-dd", isoTime: "HH:MM:ss", isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" }; // Internationalization strings dateFormat.i18n = { dayNames: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], monthNames: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ] }; // For convenience... Date.prototype.format = function [mask, utc] { return dateFormat[this, mask, utc]; };

Giới thiệu

Ngày là kiểu 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 các hành động nhất định, đến báo cáo, tính năng đăng ký và quyền truy cập có giới hạn thời gian trong các hệ thống yêu cầu đăng ký – chúng tôi thường phải so sánh ngày tháng.

Đó là, chúng tôi so sánh nếu một ngày sau hay trước một ngày khác, nếu ngày đó hôm naycó 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 JavaScriptgiúp chúng ta suy luận xem một ngày là trước hay sau ngày khác.

Các Ngày tháng Đối tượng trong JavaScript

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 phương thức tạo đối tượng mới có tên là Date để xử lý các hoạt động ngày-giờ.

Điều này có nghĩa là bạn không cần 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 bạn dễ dàng thực hiện những điều này hơn trong Vanilla JS.

Các Date lớp thực sự đơn giản để hiểu được – nó chỉ lưu trữ Thời gian Unix được đo 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], là một ngày hoàn toàn tùy ý.

Mặc dù cách triển khai này có vẻ hơi đơn giản, nhưng việc bổ sung Date lớp 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 các nhà phát triển và ngày thô.

Bây giờ, chúng ta 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 DateS.

Chúng ta có thể sử dụng các toán tử so sánh như hai so sánh hai Dates, và bên dưới, 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 Dates và so sánh chúng với một toán tử so sánh thích hợp.

Ghi chú: Toán tử bình đẳng [=====] không làm việc với Dates, vì vậy chúng tôi không kiểm tra rõ ràng xem chúng có giống nhau hay không.

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

Các getTime[] phương thức 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, getDate[], getHours[], getDay[], getMonth[]getYear[] các phương pháp để 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 getUTCDay[], getUTCDate[], getUTCHour[], getUTCMinute[]v.v. các phương thức, trả về các số nhận dạng tạm thời đã cho, được phân vùng cụ thể cho UTC.

Ghi chú: Với cách tiếp cận 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

Tuy nhiên, vì chúng tôi đang làm việc với ifif-else , một số câu lệnh không bao giờ được thực thi. Ví dụ, 9/10/19979/10/2000 có giống nhau ngày thángcác 9/10tuy nhiên, không cùng năm.

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 tôi chỉ so sánh ngày tháng, không tính đến năm.

Sự kết luận

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

Video liên quan

Chủ Đề