Hướng dẫn get number of days between two dates javascript - lấy số ngày giữa hai ngày javascript
Dưới đây là một triển khai nhanh chóng và bẩn thỉu của 5, như một bằng chứng về khái niệm để giải quyết vấn đề như được trình bày trong câu hỏi. Nó phụ thuộc vào thực tế là bạn có thể nhận được các mili giây đã trôi qua giữa hai ngày bằng cách trừ chúng, điều này ép buộc họ vào giá trị số nguyên thủy của chúng (mili giây kể từ đầu năm 1970).quick and dirty implementation of 5, as a proof of concept to solve the problem as presented in the question. It relies on the fact that you can get the elapsed
milliseconds between two dates by subtracting them, which coerces them into their primitive number value (milliseconds since the start of 1970). Show
Bạn nên lưu ý rằng API ngày "bình thường" (không có "UTC" trong tên) hoạt động trong timezone cục bộ của trình duyệt của người dùng, vì vậy nói chung bạn có thể gặp sự cố nếu người dùng của bạn ở trong thời gian Mong đợi, và mã của bạn sẽ phải đối phó với việc chuyển thời gian tiết kiệm ánh sáng ban ngày. Bạn nên đọc kỹ tài liệu cho đối tượng ngày và các phương thức của nó, và cho bất cứ điều gì phức tạp hơn, hãy xem xét mạnh mẽ việc sử dụng thư viện cung cấp API an toàn và mạnh mẽ hơn để thao tác ngày.
Ngoài ra, với mục đích minh họa, đoạn trích sử dụng quyền truy cập được đặt tên trên đối tượng 7 cho sự ngắn gọn, nhưng trong sản xuất, bạn nên sử dụng các API được tiêu chuẩn hóa như getEuityByid, hoặc nhiều khả năng là một số khung UI.
Aljgom 6.8892 Huy hiệu vàng29 Huy hiệu bạc26 Huy hiệu đồng2 gold badges29 silver badges26 bronze badges Đã trả lời ngày 12 tháng 2 năm 2009 lúc 20:43Feb 12, 2009 at 20:43
8 Theo văn bản này, chỉ có một trong những câu trả lời khác xử lý chính xác các chuyển đổi DST (thời gian tiết kiệm ánh sáng ban ngày). Dưới đây là kết quả trên một hệ thống ở California:
Mặc dù 8 trả về kết quả chính xác, tôi nghĩ rằng nó hơi cồng kềnh. Thay vào đó, bằng cách tính toán rõ ràng cho các thay đổi đối với bù UTC khi DST bắt đầu hoặc kết thúc, chúng ta có thể sử dụng số học chính xác:
Giải trìnhTính toán ngày JavaScript là khó khăn vì các đối tượng 6 lưu trữ nhiều lần trong UTC, không phải giờ địa phương. Ví dụ: 3/10/2013 12: 00 & NBSP; AM Giờ chuẩn Thái Bình Dương (UTC-08: 00) được lưu trữ dưới dạng 3/10/2013 8: 00 & NBSP; AM UTC và 3/11/2013 12: 00 & NBSP; AM Pacific Giờ ban ngày (UTC-07: 00) được lưu trữ dưới dạng 3/11/2013 7: 00 & NBSP; AM UTC. Vào ngày này, nửa đêm đến nửa đêm giờ địa phương chỉ là 23 giờ ở UTC!Mặc dù một ngày trong thời gian địa phương có thể có nhiều hơn 24 giờ, một ngày ở UTC luôn chính xác là 24 giờ.1 Phương pháp 0 được hiển thị ở trên tận dụng thực tế này bằng cách gọi lần đầu tiên 1 để điều chỉnh cả hai lần địa phương đến nửa đêm UTC, trước đó trừ và chia.1. JavaScript bỏ qua những giây nhảy vọt. Đã trả lời ngày 28 tháng 6 năm 2012 lúc 20:13Jun 28, 2012 at 20:13
Michael Liumichael LiuMichael Liu 49,8K13 Huy hiệu vàng114 Huy hiệu bạc145 Huy hiệu đồng13 gold badges114 silver badges145 bronze badges 3 Cách dễ nhất để có được sự khác biệt giữa hai ngày:
Bạn nhận được những ngày khác biệt (hoặc NAN nếu một hoặc cả hai không thể được phân tích cú pháp). Ngày phân tích phân tích kết quả trong mili giây và để có được nó vào ngày bạn phải chia nó cho 2Nếu bạn muốn nó chia cho vài ngày, giờ, phút, giây và mili giây:
Đây là phiên bản tái cấu trúc của tôi của phiên bản James:
Penny Liu 13.1k5 Huy hiệu vàng71 Huy hiệu bạc88 Huy hiệu đồng5 gold badges71 silver badges88 bronze badges Đã trả lời ngày 13 tháng 2 năm 2009 lúc 1:50Feb 13, 2009 at 1:50
một chútsome 47.1K14 Huy hiệu vàng74 Huy hiệu bạc89 Huy hiệu đồng14 gold badges74 silver badges89 bronze badges 4 Tôi khuyên bạn nên sử dụng thư viện khoảnh khắc.js (http://momentjs.com/docs/#/displaying/difference/). Nó xử lý thời gian tiết kiệm ánh sáng ban ngày một cách chính xác và nói chung là tuyệt vời để làm việc. Example:
Đã trả lời ngày 21 tháng 8 năm 2013 lúc 16:17Aug 21, 2013 at 16:17
Stephenbezstephenbezstephenbez 5.5203 Huy hiệu vàng25 Huy hiệu bạc31 Huy hiệu Đồng3 gold badges25 silver badges31 bronze badges 2 Các giải pháp sau đây sẽ giả sử các biến này có sẵn trong mã:
JS bản địaSteps:
Comment:Tôi biết đây không phải là một phần của câu hỏi của bạn mà nói chung, tôi không khuyên bạn nên thực hiện bất kỳ tính toán hoặc thao tác ngày nào trong Vanilla JavaScript và thay vào đó sử dụng thư viện như Date-Fns, Luxon hoặc Moment.js cho nó do nhiều trường hợp cạnh. Câu trả lời JavaScript này tính toán các ngày là một số thập phân. Ngoài ra, nó có thể chạy vào các trường hợp cạnh khi làm việc với thời gian tiết kiệm ánh sáng ban ngày Sử dụng một thư viện- Ngày-fns 0Tài liệu: https://date-fns.org/v2.16.1/docs/differenceindays - Luxon 1Tài liệu: https://moment.github.io/luxon/docs/class/src/datetime.js~datetime.html#instance-method-diff - khoảnh khắc.js 2Tài liệu: https://momentjs.com/docs/#/displaying/difference/ Ví dụ về Runkit
Aljgom 6.8892 Huy hiệu vàng29 Huy hiệu bạc26 Huy hiệu đồng2 gold badges29 silver badges26 bronze badges Đã trả lời ngày 12 tháng 2 năm 2009 lúc 20:43Nov 8, 2017 at 13:34
Theo văn bản này, chỉ có một trong những câu trả lời khác xử lý chính xác các chuyển đổi DST (thời gian tiết kiệm ánh sáng ban ngày). Dưới đây là kết quả trên một hệ thống ở California:marcobiedermann Mặc dù 6 Giải trình 3Tính toán ngày JavaScript là khó khăn vì các đối tượng 6 lưu trữ nhiều lần trong UTC, không phải giờ địa phương. Ví dụ: 3/10/2013 12: 00 & NBSP; AM Giờ chuẩn Thái Bình Dương (UTC-08: 00) được lưu trữ dưới dạng 3/10/2013 8: 00 & NBSP; AM UTC và 3/11/2013 12: 00 & NBSP; AM Pacific Giờ ban ngày (UTC-07: 00) được lưu trữ dưới dạng 3/11/2013 7: 00 & NBSP; AM UTC. Vào ngày này, nửa đêm đến nửa đêm giờ địa phương chỉ là 23 giờ ở UTC!Feb 12, 2009 at 20:45
Mặc dù một ngày trong thời gian địa phương có thể có nhiều hơn 24 giờ, một ngày ở UTC luôn chính xác là 24 giờ.1 Phương pháp 0 được hiển thị ở trên tận dụng thực tế này bằng cách gọi lần đầu tiên 1 để điều chỉnh cả hai lần địa phương đến nửa đêm UTC, trước đó trừ và chia.fuentesjr1. JavaScript bỏ qua những giây nhảy vọt.27 gold badges76 silver badges80 bronze badges 1 Sử dụng khoảnh khắc.js 4 5
Ruslan López 4.3291 Huy hiệu vàng25 Huy hiệu bạc36 Huy hiệu đồng1 gold badge25 silver badges36 bronze badges Đã trả lời ngày 30 tháng 4 năm 2015 lúc 20:03Apr 30, 2015 at 20:03
Michael Kmichael kMichael K 75410 Huy hiệu bạc13 Huy hiệu đồng10 silver badges13 bronze badges 1 Thử cái này 6Đã trả lời ngày 29 tháng 4 năm 2021 lúc 2:54Apr 29, 2021 at 2:54
borma425borma425borma425 3045 Huy hiệu bạc15 Huy hiệu Đồng5 silver badges15 bronze badges Để tính toán ngày giữa 2 ngày đã cho, bạn có thể sử dụng mã sau. Tôi sử dụng ở đây là ngày 01 tháng 1 năm 2016 và ngày 31 tháng 12 năm 2016 7 8
MPLUNGJAN 161K27 Huy hiệu vàng168 Huy hiệu bạc226 Huy hiệu Đồng27 gold badges168 silver badges226 bronze badges Đã trả lời ngày 11 tháng 1 năm 2016 lúc 5:07Jan 11, 2016 at 5:07
Noona Marjanoona MarjaNooNa MarJa 5155 Huy hiệu bạc12 Huy hiệu Đồng5 silver badges12 bronze badges Giá trị ngày trong JS là giá trị DateTime. Vì vậy, tính toán trực tiếp không nhất quán: 9Ví dụ: chúng ta cần chuyển đổi ngày thứ 2: 0Phương pháp có thể bị cắt cụt các nhà máy trong cả hai ngày: 1
Ruslan López 4.3291 Huy hiệu vàng25 Huy hiệu bạc36 Huy hiệu đồng1 gold badge25 silver badges36 bronze badges Đã trả lời ngày 30 tháng 4 năm 2015 lúc 20:03Nov 19, 2013 at 21:40
Michael Kmichael kNorris 75410 Huy hiệu bạc13 Huy hiệu đồng1 silver badge3 bronze badges Thử cái này 2Đã trả lời ngày 29 tháng 4 năm 2021 lúc 2:54 3045 Huy hiệu bạc15 Huy hiệu ĐồngApr 30, 2015 at 7:58
Để tính toán ngày giữa 2 ngày đã cho, bạn có thể sử dụng mã sau. Tôi sử dụng ở đây là ngày 01 tháng 1 năm 2016 và ngày 31 tháng 12 năm 2016Timo Kähkönen MPLUNGJAN8 gold badges70 silver badges111 bronze badges 1
161K27 Huy hiệu vàng168 Huy hiệu bạc226 Huy hiệu Đồng 3
MPLUNGJAN 161K27 Huy hiệu vàng168 Huy hiệu bạc226 Huy hiệu Đồng27 gold badges168 silver badges226 bronze badges Đã trả lời ngày 11 tháng 1 năm 2016 lúc 5:07Jul 13, 2016 at 16:19
Noona Marjanoona Marjariv 5155 Huy hiệu bạc12 Huy hiệu Đồng1 silver badge1 bronze badge 1 Giá trị ngày trong JS là giá trị DateTime. Vì vậy, tính toán trực tiếp không nhất quán: 4Ví dụ: chúng ta cần chuyển đổi ngày thứ 2:Mar 27, 2013 at 12:01
Phương pháp có thể bị cắt cụt các nhà máy trong cả hai ngày:guilin 桂林 Đã trả lời ngày 19 tháng 11 năm 2013 lúc 21:4028 gold badges92 silver badges145 bronze badges Norrisnorris 5Huy hiệu Bạc 1111 Huy hiệu Đồng Tốt hơn là loại bỏ DST, Math.ceil, Math.Floor, v.v. bằng cách sử dụng UTC Times:Apr 2, 2015 at 20:59
Ví dụ này cho sự khác biệt 109 ngày. 3 là một ngày tính bằng mili giây.PopmaticĐã trả lời ngày 30 tháng 4 năm 2015 lúc 7:581 silver badge6 bronze badges 1 6Timo Kähkönentimo Kähkönen Huy hiệu vàng 11.6K8Nov 21, 2016 at 12:32
1 Có thể tính toán sự khác biệt trong ngày đầy đủ giữa hai ngày nằm trên các TZ khác nhau bằng cách sử dụng công thức sau:ceil instead of floor, round will work but it isn't the right operation. 7Đã trả lời ngày 13 tháng 7 năm 2016 lúc 16:19Mar 15, 2012 at 14:21
RivrivTolo Palmer Huy hiệu bạc 10112 gold badges17 silver badges27 bronze badges 1 Tôi đã tìm thấy câu hỏi này khi tôi muốn thực hiện một số tính toán vào hai ngày, nhưng ngày có giá trị giờ và phút, tôi đã sửa đổi câu trả lời của @Michael-liu để phù hợp với yêu cầu của tôi và nó đã vượt qua bài kiểm tra của tôi. 8Ngày khác nhau function dateDiff( str1, str2 ) { var diff = Date.parse( str2 ) - Date.parse( str1 ); return isNaN( diff ) ? NaN : { diff : diff, ms : Math.floor( diff % 1000 ), s : Math.floor( diff / 1000 % 60 ), m : Math.floor( diff / 60000 % 60 ), h : Math.floor( diff / 3600000 % 24 ), d : Math.floor( diff / 86400000 ) }; } 4 và function dateDiff( str1, str2 ) { var diff = Date.parse( str2 ) - Date.parse( str1 ); return isNaN( diff ) ? NaN : { diff : diff, ms : Math.floor( diff % 1000 ), s : Math.floor( diff / 1000 % 60 ), m : Math.floor( diff / 60000 % 60 ), h : Math.floor( diff / 3600000 % 24 ), d : Math.floor( diff / 86400000 ) }; } 5 nên bằng 1. (2 giờ) ngày khác function dateDiff( str1, str2 ) { var diff = Date.parse( str2 ) - Date.parse( str1 ); return isNaN( diff ) ? NaN : { diff : diff, ms : Math.floor( diff % 1000 ), s : Math.floor( diff / 1000 % 60 ), m : Math.floor( diff / 60000 % 60 ), h : Math.floor( diff / 3600000 % 24 ), d : Math.floor( diff / 86400000 ) }; } 6 và function dateDiff( str1, str2 ) { var diff = Date.parse( str2 ) - Date.parse( str1 ); return isNaN( diff ) ? NaN : { diff : diff, ms : Math.floor( diff % 1000 ), s : Math.floor( diff / 1000 % 60 ), m : Math.floor( diff / 60000 % 60 ), h : Math.floor( diff / 3600000 % 24 ), d : Math.floor( diff / 86400000 ) }; } 7 nên bằng 1. (46 giờ) 9Đã trả lời ngày 27 tháng 3 năm 2013 lúc 12:01Dec 9, 2020 at 22:04
guilin 桂林 guilin 桂林nkitku 16.8K28 Huy hiệu vàng92 Huy hiệu bạc145 Huy hiệu Đồng1 gold badge27 silver badges25 bronze badges 1 Đây có thể không phải là giải pháp thanh lịch nhất, nhưng dường như nó trả lời câu hỏi với một đoạn mã tương đối đơn giản, tôi nghĩ vậy. Bạn không thể sử dụng một cái gì đó như thế này: Đây là giả sử bạn đang chuyển các đối tượng ngày làm tham số.Feb 12, 2009 at 20:16
Đã trả lời ngày 2 tháng 4 năm 2015 lúc 20:59kgiannakakis Popmaticpopmatic27 gold badges159 silver badges193 bronze badges 0 0
MPLUNGJAN 161K27 Huy hiệu vàng168 Huy hiệu bạc226 Huy hiệu Đồng27 gold badges168 silver badges226 bronze badges Đã trả lời ngày 11 tháng 1 năm 2016 lúc 5:07Jan 21, 2017 at 23:59
3 1
Ruslan López 4.3291 Huy hiệu vàng25 Huy hiệu bạc36 Huy hiệu đồng1 gold badge25 silver badges36 bronze badges Noona Marjanoona MarjaDec 2, 2014 at 2:49
5155 Huy hiệu bạc12 Huy hiệu ĐồngAbdennour TOUMI Giá trị ngày trong JS là giá trị DateTime.36 gold badges233 silver badges243 bronze badges 0 Vì vậy, tính toán trực tiếp không nhất quán: 2Ví dụ: chúng ta cần chuyển đổi ngày thứ 2:Jan 25, 2019 at 19:52
Phương pháp có thể bị cắt cụt các nhà máy trong cả hai ngày:OhhhThatVarun Đã trả lời ngày 19 tháng 11 năm 2013 lúc 21:402 gold badges23 silver badges45 bronze badges Norrisnorris 3Huy hiệu Bạc 1111 Huy hiệu ĐồngJul 2, 2015 at 9:03
user3806549user3806549user3806549 Tốt hơn là loại bỏ DST, Math.ceil, Math.Floor, v.v. bằng cách sử dụng UTC Times:1 gold badge16 silver badges24 bronze badges Ví dụ này cho sự khác biệt 109 ngày. 3 là một ngày tính bằng mili giây. 4Example: 5Đã trả lời ngày 30 tháng 4 năm 2015 lúc 7:58Dec 16, 2015 at 16:56
Timo Kähkönentimo KähkönenWallace Sidhrée Huy hiệu vàng 11.6K86 gold badges47 silver badges57 bronze badges Có thể tính toán sự khác biệt trong ngày đầy đủ giữa hai ngày nằm trên các TZ khác nhau bằng cách sử dụng công thức sau:using milliseconds. Đã trả lời ngày 13 tháng 7 năm 2016 lúc 16:19date.getTime() returns milliseconds and doing math operation with milliseconds requires to include
Ngày khác nhau 4 và 5 nên bằng 1. (2 giờ) ngày khác 6 và 7 nên bằng 1. (46 giờ)+1 to its result if you want the to count all days involved. 6
Đã trả lời ngày 27 tháng 3 năm 2013 lúc 12:01Sep 20, 2016 at 1:48
0 guilin 桂林 guilin 桂林 7Đã trả lời ngày 21 tháng 7 năm 2016 lúc 13:43Jul 21, 2016 at 13:43
3 Nếu bạn muốn có DateArray với ngày, hãy thử điều này: 8Gỡ lỗi Đã trả lời ngày 7 tháng 9 năm 2016 lúc 14:02Sep 7, 2016 at 14:02
Cách đơn giản để tính toán ngày giữa hai ngày là loại bỏ cả hai thành phần thời gian của họ, tức là cài đặt giờ, phút, giây và mili giây đến 0 và sau đó trừ thời gian của họ và lặn với nó với một phần nghìn giây. 9Đã trả lời ngày 19 tháng 9 năm 2017 lúc 5:50Sep 19, 2017 at 5:50
1
0Đã trả lời ngày 18 tháng 2 năm 2017 lúc 5:28Feb 18, 2017 at 5:28
Zloctbzloctbzloctb 9,9806 Huy hiệu vàng67 Huy hiệu bạc85 Huy hiệu Đồng6 gold badges67 silver badges85 bronze badges Tôi đã lấy một số cảm hứng từ các câu trả lời khác và làm cho các đầu vào có vệ sinh tự động. Tôi hy vọng điều này hoạt động tốt như một cải tiến so với các câu trả lời khác. 1 2Đã trả lời ngày 23 tháng 1 năm 2019 lúc 3:09Jan 23, 2019 at 3:09
Lewdevlewdevlewdev 6.5712 Huy hiệu vàng28 Huy hiệu bạc21 Huy hiệu đồng2 gold badges28 silver badges21 bronze badges 1 Gần đây tôi có cùng một câu hỏi và đến từ một thế giới Java, tôi ngay lập tức bắt đầu tìm kiếm một triển khai JSR 310 cho JavaScript. JSR 310 là API ngày và giờ cho Java (được vận chuyển tiêu chuẩn là của Java 8). Tôi nghĩ rằng API được thiết kế rất tốt. May mắn thay, có một cổng trực tiếp đến JavaScript, được gọi là JS-Joda.js-joda. Đầu tiên, bao gồm JS-Joda trong 8: 3Sau đó, chỉ cần làm điều này: 4Bây giờ 0 chứa số ngày giữa. Lưu ý rằng ngày kết thúc là độc quyền.Đã trả lời ngày 12 tháng 12 năm 2020 lúc 14:19Dec 12, 2020 at 14:19
MC Emperormc Hoàng đếMC Emperor 21.4K14 Huy hiệu vàng76 Huy hiệu bạc122 Huy hiệu đồng14 gold badges76 silver badges122 bronze badges Làm thế nào để bạn tìm thấy số ngày giữa hai ngày?Để tính số ngày giữa hai ngày, bạn cần trừ ngày bắt đầu kể từ ngày kết thúc.Nếu điều này vượt qua vài năm, bạn nên tính toán số năm đầy đủ.Trong khoảng thời gian còn lại, làm việc ra số tháng.Trong thời gian còn lại, hãy tìm ra số ngày.subtract the start date from the end date. If this crosses several years, you should calculate the number of full years. For the period left over, work out the number of months. For the leftover period, work out the number of days.
Làm cách nào để đếm ngày giữa hai ngày trong jQuery?dành thời gian();// Xác định số ngày giữa hai ngày.ngày var = millisbetween / (1000 * 3600 * 24);// Hiển thị số ngày cuối cùng giữa các ngày.var days = millisBetween / (1000 * 3600 * 24); // Show the final number of days between dates.
Làm thế nào để bạn tính toán số ngày giữa hai ngày trong TypeScript?Hàm getdaydiff (startDate: ngày, cuối: ngày): số {const msinday = 24 * 60 * 60 * 1000;return math.Round (math.abs (số (enddate) - số (startDate)) / msinday);} // 👇 10 Bảng điều khiển.Nhật ký (getdaydiff (ngày mới ('2022-03-17'), ngày mới ('2022-03-27')));// 👇 30 Bảng điều khiển. round(Math. abs(Number(endDate) - Number(startDate)) / msInDay); } // 👇️ 10 console. log(getDayDiff(new Date('2022-03-17'), new Date('2022-03-27'))); // 👇️ 30 console. |