javascript
javascript
javascript
  • Lấy vị trí người dùng với javascript
  • [Problem] Lấy key đầu tiên tìm thấy chứa giá trị cần tìm (ok)
  • 🥸Đoạn mã JavaScript để thêm ký tự đặc biệt vào đầu mỗi dòng trong văn bản nhiều dòng (ok)
  • 😍Tạo ra font in đậm và copy đến website để sử dụng (ok)
  • Hiệu ứng mở sách cực đẹp
  • 🤩JS: Scroll Animation using Intersection Observer API 🤩 (ok)
  • 😅Draw svg on scroll Full (ok)
  • 😄Install Linguise on any domain dịch tự động (ok)
  • 😅Sử dụng ajax tạo popup cho các bài viết wordrpess mattervn.com (ok)
  • 😆PWA - beforeinstallprompt toplusgames.com (ok)
  • How to Use the HTML5 Full-Screen API (Again) (ok)
  • [ERROR GAME] fix lỗi không load iframe gamedistribution.com for toplusgames.com (ok)
  • 😅jQuery Plugin To Create Animated Placeholders - placeholderTypewriter (ok)
  • 😍Làm chức năng thông báo khách hàng đăng ký namkhoahanoi.vn (ok)
  • Tencent Captcha Demo (ok)
  • 😉Send Mail same javascript elasticemail (ok)
  • 🥳Các tool phong thuỷ (ok)
  • 😇Nice Select A lightweight Vanilla JavaScript plugin (ok)
  • Merge objects with the same id but sum values of the objects (ok)
  • 😅Page: DOMContentLoaded, load, beforeunload, unload phần 1 (ok)
  • 😍Scripts: async, defer phần 2(ok)
  • 😂Javascript Array chunkArrayInGroups(arr, size)
  • Sequentially Resolve Promises Works, Giải quyết tuần tự các lời hứa hoạt động (ok)
  • Using Async / Await with the Array Reduce Method API (ok)
  • Flatten an array of arrays,merge, làm phẳng một mảng các mảng (ok)
  • 😌Dependent Dropdown Full (ok)
  • 🥳Select Box Change Dependent Options dynamically (JavaScript Object)
  • 🤩Add elements dynamically full (ok)
  • 😅👌Multiple versions jquery (ok)
  • 😍Cách sử dụng jQuery trong sweetAlert2 là chúng ta phải sử dụng didOpen full (ok)
  • 😁😁 mdbgo.io, mdbootstrap.com full (ok)
  • 🤪Chú ý nếu lỗi cảnh báo từ khóa new nếu dùng trong js thường chúng ta sẽ sử dụng trong mudule (ok)
  • 😝reCAPTCHA javascript (ok)
  • Firework Simulator v2 Phao Hoa (ok)
  • Active scroll center (ok)
  • 🤪Sort array of objects by string property value (ok)
  • 😏findIndex, find index in Array object (ok)
  • 😂Sử dụng nhiều toán tử 3, multiple Ternary Operators (ok)
  • 😅A simple and easy to use library that creates fullscreen scrolling websites fullPage.js (ok)
  • Xây dựng ứng dụng CRUD sử dụng Vue.js trong Laravel (ok)
  • [Chart] Morris.js Line & Area Charts,Bar Charts, Donut Charts, graph (ok)
  • [Chart] Chart.js
  • Multi select checkbox table bootstrap (ok)
  • 😀jquery new, jquery old, jquery migrate (ok)
  • Popup slide up from the bottom overflowing other div blocks (ok)
  • ASYNC JavaScript (CALLBACK, PROMISES, ASYNC AWAIT) video (ok)
  • === START jQuery Mobile ===
  • Data Attributes full (ok)
  • Viết một ứng dụng Restaurant Picke sử dụng "back menu" (ok)
  • Viết một ứng dụng thời tiết, Weather sử dụng panel (ok)
  • jQuery Mobile Tutorial w3schools.com (ok)
  • jQuery Mobile
  • jQuery Mobile - Events (ok)
  • Back button in jquery mobile (ok)
  • === END jQuery Mobile ===
  • removeDuplicates, Remove duplicate values from JS array, remove all duplicates an array object (ok)
  • Sử dụng thư viện jquery.hoverdir.js để làm hiệu ứng hover tuyệt đẹp (ok)
  • Modernizr là gì ? Sử dụng nó cho những trình duyệt cũ ra sao? (ok)
  • Nhận biết tính năng CSS: Modernizr hay Feature Queries? (ok)
  • [SALESFORCE] Remote Action function in Visualforce Page (ok)
  • ScrollIt.js menu (ok)
  • Cách sử dụng scrollTo vanilla cực chất 😘 (ok)
  • Một bài toán xử lý bất đồng bộ trong kintone để lấy số requet quá giới hạn (OK)
  • hexagon thư viện tạo avatar Canvas (ok)
  • 😅Sử dụng Object.assign và để copy dữ liệu, edit, input, form (ok)
  • Một cách đặt và gán giá trị trong mảng, object cự ngắn gọn (ok)
  • [LAZY] jQuery.Lazy và tạo background-loading cực chất (ok)
  • Ví dụ Sử dụng sẵn thư viện masonry của wordpres (ok)
  • Ảnh base64 dùng làm src, placeholder (ok)
  • Kiểm tra hình ảnh đã được tải với thư viện imagesLoaded (ok)
  • Check if Function Exists before Calling? (ok)
  • Async/Await Javascript Full Example (ok)
  • Thenables in JavaScript phục vụ cho bài viết trên (ok)
  • Script distance, khoảng cách (ok)
  • Time, Date full (ok)
  • Function getAllDatesOfMonth (ok)
  • How do I make a placeholder for a 'select' box? (ok)
  • Library choise (ok)
  • jQuery - Redirect with post, Get data php (ok)
  • How to pass data from one page to another page html (ok)
  • how to send data onClick() to another php for processing using post or get?
  • draw grid, vẽ grid (ok)
  • Fullscreen Horizontal Page Slider with jQuery and CSS3 - HSlider scroll template html (ok)
  • _.template, UnderscoreJS Templates Full (ok)
  • Character limit on tag type input number (ok)
  • How to set maximum length in input type=number (ok)
  • ========= START JEST =======
  • Getting Started (ok)
  • Using Matchers (ok)
  • Testing Asynchronous Code
  • Setup and Teardown (ok)
  • Mock Functions
  • Jest Platform
  • Jest tutorial
  • Testing trong Javascript với Jest (Phần 1) (ok)
  • Testing trong Javascript với Jest (Phần 2)
  • Giới thiệu về Jest (Delightful JavaScript Testing)
  • Thử nghiệm phát triển theo hướng phản ứng với Jest và Enzyme
  • Cách kiểm tra các thành phần phản ứng với Jest và Enzyme, Phần 1
  • Cách kiểm tra thành phần phản ứng với Jest và Enzyme, Phần 2
  • Jest js mock jquey and lib
  • Unit testing Các thành phần React với Enzyme và Jest
  • Hướng dẫn viết unit test React với Jest và Enzyme (P1)
  • Tôi đã test các React component như thế nào? (phần 2)
  • Test component trong React với Jest
  • Test Component với Jest và Emzyme
  • Tổng quan về unit test cho dự án react redux saga với Jest Part 1
  • ========= END JEST =======
  • ======= START GULP TUTORIAL ======
  • [GULP] Tìm hiểu về Gulp.js
  • [GULP] Gulp Tutorial
  • [GULP] Gulp - Developing An Application (ok)
  • [GULP] Gulp - Combining Tasks (ok)
  • [GULP] Gulp - Watch (ok)
  • [GULP] Gulp - Live Reload
  • [GULP] Gulp - Optimizing CSS and JavaScript
  • [GULP] Gulp - Optimizing Images
  • [GULP] Gulp - Useful Plugins
  • [GULP] Gulp - Cleaning Unwanted Files
  • Đọc thêm những tài liệu trang khác
  • ======= END GULP TUTORIAL ======
  • Prevent form submission on Enter key press, keyCode (ok)
  • Lấy kích thước ảnh gốc image (ok)
  • 😆How to Center Carousel Slider (ok)
  • Putting Dots onto Owl Carousel Instead of below specialtouchgifts.com.au (ok)
  • Cách xây dựng một Full Screen Carousel với Owl.js
  • Lazy load với owl.carousel.js (ok)
  • Show half of the other item on Owl Carousel vinmec.com items: 1.5 (ok)
  • Show half of the other item on Owl Carousel vinmec.com stagePadding (ok)
  • ------------ Start Fetch -----------
  • Using Fetch Full
  • 😅Javascript Fetch JSON PHP Complete FormData phần 1(ok)
  • Một ví dụ quá đỉnh lấy dữ liệu của form submit trong js bằng đối tượng new FormData + php phần 2(ok)
  • Có một sự thật sử dụng async đồng nghĩa với trả về kết quả là PROMISE (ok)
  • 😅Promise.all full (ok)
  • All you need to know about Promise.all
  • [PROMISE] Promise.all()
  • [PROMISE] Tìm hiểu về promise trong ES6
  • [PROMISE] Introduction to Promises
  • jQuery off() Method (ok)
  • How to make HTTP requests with Axios
  • Axios vs Fetch - 2020 nên sử dụng thằng nào với những tính năng mới trong javascript
  • Get and Post method using Fetch API (ok)
  • Sử dụng JavaScript Fetch API với Async/Await (ok)
  • Xử lý lỗi cho fetch trong trường hợp không có kết nối hoặc kết nối lâu (ok)
  • ------------ End Fetch -----------
  • BigDataCloud Free Reverse Geocoding Javascript API Client (ok)
  • Vietmap API
  • 🥰Sử dụng API Giao hàng Nhanh để tính giá cước vận chuyển (ok)
  • photonsearch as you type with OpenStreetMap map (ok)
  • Leaflet - Một thư viện JS mã nguồn mở cho việc xây dụng ứng dụng bản đồ map (ok)
  • Xây dựng popup lấy vị trí map áp dụng pointfinder (ok)
  • Reverse Geocoding Convert Lat Long to Address map (ok)
  • Free Reverse Geocoding Javascript API map (ok)
  • [YAML] In Action Tutorial Series - General - Hướng dẫn sử dụng file YML YAML cơ bản
  • ----------------- Start Notification -----------------
  • Đối tượng caches object caches (ok)
  • Notification (ok)
  • Sử dụng indexedDB (ok)
  • Using the Notifications API (ok)
  • NotificationEvent (chưa có ví dụ :((
  • ServiceWorkerGlobalScope.onnotificationclick (ok)
  • ServiceWorkerRegistration.getNotifications(ok)
  • ServiceWorkerRegistration.showNotification(ok)
  • Giao tiếp giữa các cửa sổ với Window.postMessage API (ok)
  • Window open() Method (ok)
  • ----------------- End Notification -----------------
  • Example Cookie full (ok)
  • Thay đổi class active javascript bằng cách viết hàm (P1)
  • Thay đổi class active javascript bằng cách viết hàm (P2)
  • jQuery Mockjax Plugin (chưa học cách sử dụng)
  • jQuery Ajax X-editable bootstrap plugin (chưa học cách sử dụng)
  • Lọc theo điều kiện (filter) (ok)
  • Các ví dụ về filter
  • jQuery | grep() Method (ok)
  • Hai bài toán so sánh kinh điển trong javascript
  • Function random :)
  • Một cách sử dụng tab trong theme newspaper
  • Hiệu ứng scroll + animation + menu trượt mượt
  • Trigger a CSS animation on scroll xuongkhopbacninh.vn (ok)
  • App Css Loaded (scroll create link) (ok)
  • Hiệu tứng scroll cực chất (ok)
  • App Js Loaded (ok)
  • Sử dụng async và defer full (Oke)
  • Cách sử dụng Thuộc tính async và defer trong JavaScript hay
  • ReferenceError: Can't find variable: requestAnimationFrame
  • Đoạn code check lỗi PHP trong Ajax
  • [SELECT2] Sử dụng Select2 để thay thế select boxes
  • Một cách sử dụng lazyload khi addclass thật khó khăn...
  • Hiệu ứng croll chuột và % cực đẹp :_
  • Tạo chức năng tự động hoàn tất nhập liệu với thư viện jQuery UI Autocomplete (Phần 1)
  • Tạo chức năng tự động hoàn tất nhập liệu với thư viện jQuery UI Autocomplete (Phần 2)
  • JavaScript String split() Method (OK)
  • Sử dụng thư viện displace để làm menu kéo thả (ok):)))
  • Menu cực chất :)))
  • Sử dụng thư viện slick (ok)
  • vertical scroll, Vertical carousel (ok)
  • Google-like Thanos disintegration (ok)
  • Dùng thư viện jspdf
  • Công thức Toán học cho website
  • Fix lỗi tự động làm thay đổi độ cao :( vieclam123.vn :(
  • Sử dụng window.addEventListener để resize và responsive <3
  • Javascript create, read, and delete cookies (ok)
  • Tự động submit bằng javscript :))) (ok)
  • avoid form warning if user clicks refresh (ok)
  • Một cách truy cập phần tử bằng js thông qua id lạ :)))
  • Meta Refresh
  • Truyền dữ liệu từ javascript sang php
    • Sử dụng form để truyền sang php (ok)
    • Truyền giá trị theo file bằng đường dẫn (ok)
    • Dùng json để truyền sang php
  • auto-refresh page once only after first load – Using JavaScript / JQuery
    • auto-refresh page once only after first load – Using JavaScript / JQuery (ok)
  • Sticky Scroller
    • Sticky Scroller phần 1 (ok)
    • Sticky Scroller phần 2 (ok)
    • owl carousel with dotsContainer (Dots + Text) (ok)
    • Owl Carousel 2 Thumbnails plugin (ok)
  • easy_background Background Slideshow (ok) dev.vieclam123.vn
  • scroll cực chất timviec365.vn, vieclam123.vn (ok)
  • Thư viện lightslider-master gần giống với Owl Carousel
  • Thư viện lightGallery để làm những bộ Sưu tập Gallery
  • Tự viết click slide (ok)
  • Draggable & Touch-friendly Slider Carousel In Pure JS (ok)
  • Slider owl được viết dưới dạng Thumnail (0k)
  • jquery.js:5092 [Violation] Added non-passive event listener to a scroll-blocking 'touchstart' (ok)
  • Added non-passive event listener to a scroll-blocking 'touchstart' event (ok)
  • sticky-mobile-menu-burger-menu (ok)
  • How can I add class to the first and last item among the visible items of Owl Carousel 2? (ok)
  • Owl-carousel2 DEMO - items in 2 rows (oke)
  • How can I create a carousel slick with multiple rows? (ok)
  • Một cách sử dụng create <style> để thêm style (ok)
  • Two Rows Olw Carousel (ok) vieclam123.vn
  • Chức năng tự gọi Javascript (ok) tự động auto
  • Click Next Javascript Base (ok)
  • Slider owl được viết dưới dạng Thumnail viết trên jsfiddle (0k)
  • 😆Creating a Countdown Timer, dakhoathienhoa.com.vn (oK)
  • 🥸NumScroller, Counter From Zero To Value - Javascript Animation (ok)
  • Click Button background-hover white (ok)
  • CodePen HomeLazy Loading Images (Ok)
  • Custom Date Javasript (job247.vn)
  • Tooltip
  • button thay đổi thẻ tags button và span trong Owl Carousel thành thẻ khác :)) (ok)
  • Thêm class vào navigation Owl Carousel (ok)
  • Click lần đầu sử event.preventDefault(); lầu sau not event.preventDefault();
  • landscape && landscape (ok)
  • Landscape && Portrait (ok) job247.vn
  • Hammer thư viện JavaScript chạm cho màn hình cảm ứng
  • jQuery Plugin To Add CSS3 Scrolling Effects On Your Web Page - Smoove menu (ok)
  • 😃Auto Expanding Table Of Contents Plugin - Dynamic Content menu (ok)
  • Tornis - watch and respond
  • scroll-manager
  • Xem thêm
  • Hướng dẫn nấu món "Lazy loading image" theo chuẩn 5 sao Google
  • Welcome to jquery-confirm!
    • jQuery Message Box Plugin Demo Page
  • Magnific-Popup Popup img
  • Slider Swiper Slider-Swiper dùng viết slider giống app
  • Magnific Popup Documentation
  • filter search (ok)
  • Is it possible to convert a select menu to buttons? (ok)
  • Changing selected option on button click select (ok) homef.vn hoặc inop.vyanh.net
  • scrooll animation (job247.vn) (ok)
  • Select2 tutorial
    • Single select boxes (ok)
  • [SELECT2] Disabling a Select2 control (ok)
  • Disabling options (ok)
  • placeholder (ok)
  • Hiển thị nút xóa các giá trị đã chọn + allowClear (ok)
  • Đọc dữ liệu từ một mảng, Data sources (ok)
  • Sử dụng database + php (ok)
  • [SELECT2] Sử dụng form + select2 + ajax + get value (ok)
  • Đọc dữ liệu từ nguồn khác sử dụng AJAX (ok)
  • Thiết lập giá trị mặc định ban đầu trên HTML như bình thường (ok)
  • Sử dụng Ajax để tải dữ liệu từ một nguồn khác (ok)
  • change form
Powered by GitBook
On this page

Was this helpful?

Time, Date full (ok)

PreviousScript distance, khoảng cách (ok)NextFunction getAllDatesOfMonth (ok)

Last updated 2 years ago

Was this helpful?

Đọc thêm:

a1

Part 1

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<script type="text/javascript" src="https://momentjs.com/downloads/moment.min.js"></script>
	<title>Document</title>
</head>
<body>
	<script type="text/javascript">
		var test1 = moment('2015-07-04T00:00:00.000Z').utc().format('MM/DD/YYYY HH:mm:ss');
		var test2 = moment('2015-07-04T00:00:20.000Z').utc().format('MM/DD/YYYY HH:mm:ss');
		var data1 = new Date(test1);
		var data2 = new Date(test2);
		console.log(data1.getTime());
		console.log(data2.getTime());
	</script>
	// 1435942800000
        // 1435942820000
</body>
</html>

Part 2

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<script type="text/javascript" src="https://momentjs.com/downloads/moment.min.js"></script>
	<title>Document</title>
</head>
<body>
	<script type="text/javascript">
  	var proposedM1 = moment('2015-07-05T09:30:00.000Z').utc().format('MM/DD/YYYY HH:mm:ss');
		var momentDate = moment(proposedM1)
  	var hours = momentDate.hours();
  	var minutes = momentDate.minutes();
  	console.log(hours);
  	console.log(minutes);
  	// 9
        //  30
	</script>
</body>
</html>

Part 3

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script type="text/javascript">
  var DateDiff = {
    inSeconds: function(d1, d2) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();
        return parseInt((t2-t1)/1000);
    },
    inMinutes: function(d1, d2) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();
        return parseInt((t2-t1)/60000);
    },
    inMinutesRound: function(d1, d2) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();
        var muni = parseInt((t2-t1)/(60000));
        var mod = muni % 60;
        return mod;
    },
    inHous: function(d1, d2) {
      var t2 = d2.getTime();
      var t1 = d1.getTime();
      return parseInt((t2 - t1) / (3600 * 1000));
    },
    inDays: function(d1, d2) {
      var t2 = d2.getTime();
      var t1 = d1.getTime();
      return parseInt((t2 - t1) / (24 * 3600 * 1000));
    },
    inWeeks: function(d1, d2) {
      var t2 = d2.getTime();
      var t1 = d1.getTime();
      return parseInt((t2 - t1) / (24 * 3600 * 1000 * 7));
    },
    inMonths: function(d1, d2) {
      var d1Y = d1.getFullYear();
      var d2Y = d2.getFullYear();
      var d1M = d1.getMonth();
      var d2M = d2.getMonth();
      return (d2M + 12 * d2Y) - (d1M + 12 * d1Y);
    },
    inYears: function(d1, d2) {
      return d2.getFullYear() - d1.getFullYear();
    }
  }
  var dString = "Dec, 10, 2021";
  var d1 = new Date(dString);
  var d2 = new Date();
  document.write("<br />Number of <b>seconds</b> since " + dString + ": " + DateDiff.inSeconds(d1, d2));
  document.write("<br />Number of <b>minutes</b> since " + dString + ": " + DateDiff.inMinutes(d1, d2));
  document.write("<br />Number of <b>minutesRound</b> since " + dString + ": " + DateDiff.inMinutesRound(d1, d2));
  document.write("<br />Number of <b>hous</b> since " + dString + ": " + DateDiff.inHous(d1, d2));
  document.write("<br />Number of <b>days</b> since " + dString + ": " + DateDiff.inDays(d1, d2));
  document.write("<br />Number of <b>weeks</b> since " + dString + ": " + DateDiff.inWeeks(d1, d2));
  document.write("<br />Number of <b>months</b> since " + dString + ": " + DateDiff.inMonths(d1, d2));
  document.write("<br />Number of <b>years</b> since " + dString + ": " + DateDiff.inYears(d1, d2));
  </script>
  Number of seconds since Dec, 10, 2021: 39548
 Number of seconds since Dec, 10, 2021: 39548
Number of minutes since Dec, 10, 2021: 659
Number of minutesRound since Dec, 10, 2021: 59
Number of hous since Dec, 10, 2021: 10
Number of days since Dec, 10, 2021: 0
Number of weeks since Dec, 10, 2021: 0
Number of months since Dec, 10, 2021: 0
Number of years since Dec, 10, 2021: 0
</body>
</html>

Part 4

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <script type="text/javascript" src="https://momentjs.com/downloads/moment.min.js"></script>
  <title>Document</title>
</head>
<body>
  <script type="text/javascript">
	  var DateDiff = {
	    inSeconds: function(d1, d2) {
	      var t2 = d2.getTime();
	      var t1 = d1.getTime();
	      return parseInt((t2 - t1) / 1000);
	    },
	    inMinutes: function(d1, d2) {
	      var t2 = d2.getTime();
	      var t1 = d1.getTime();
	      return parseInt((t2 - t1) / 60000);
	    },
	    inMinutesRound: function(d1, d2) {
	      var t2 = d2.getTime();
	      var t1 = d1.getTime();
	      var muni = parseInt((t2 - t1) / (60000));
	      var mod = muni % 60;
	      return mod;
	    },
	    inHous: function(d1, d2) {
	      var t2 = d2.getTime();
	      var t1 = d1.getTime();
	      return parseInt((t2 - t1) / (3600 * 1000));
	    },
	    inDays: function(d1, d2) {
	      var t2 = d2.getTime();
	      var t1 = d1.getTime();
	      return parseInt((t2 - t1) / (24 * 3600 * 1000));
	    },
	    inWeeks: function(d1, d2) {
	      var t2 = d2.getTime();
	      var t1 = d1.getTime();
	      return parseInt((t2 - t1) / (24 * 3600 * 1000 * 7));
	    },
	    inMonths: function(d1, d2) {
	      var d1Y = d1.getFullYear();
	      var d2Y = d2.getFullYear();
	      var d1M = d1.getMonth();
	      var d2M = d2.getMonth();
	      return (d2M + 12 * d2Y) - (d1M + 12 * d1Y);
	    },
	    inYears: function(d1, d2) {
	      return d2.getFullYear() - d1.getFullYear();
	    }
	  }
	  var test1 = moment('2021-12-11T00:00:00Z').utc().format('MM/DD/YYYY HH:mm:ss');
		var test2 = moment('2021-12-11T01:00:00Z').utc().format('MM/DD/YYYY HH:mm:ss');
		var d1 = new Date(test1);
		var d2 = new Date(test2);
		var momentDate1 = moment(d1)
  	var hours1 = momentDate1.hours();
  	var minutes1 = momentDate1.minutes();
  	var momentDate2 = moment(d2)
  	var hours2 = momentDate2.hours();
  	var minutes2 = momentDate2.minutes();
  	document.write("<br />Number of <b>minutes</b> since: " + DateDiff.inMinutes(d1, d2));
  	document.write("<br />Number of <b>seconds</b> since: " + DateDiff.inSeconds(d1, d2));
  </script>
  Number of minutes since: 60
  Number of seconds since: 3600
</body>
</html>

Part 5

<!DOCTYPE html>
<html>
<head>
  <!-- jQuery and jQueryUI References -->
  <script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
  <script type='text/javascript'>
  var start = new Date("7/14/2014 08:00");
  var end = new Date("7/15/2014 10:00");
  var working_start = 8;
  var working_end = 10;
  var includeWeekends = false;
  var result = workingHoursBetweenDates(start, end, working_start, working_end, includeWeekends);
  console.log(result);
  var working_end_test = new Date("1/1/0001 " + "17:00").getHours() + (new Date("1/1/0001 " + "17:30").getMinutes() / 60);
  console.log(working_end_test);
  // Simple function that accepts two parameters and calculates the number of hours worked within that range
  function workingHoursBetweenDates(startDate, endDate, dayStart, dayEnd, includeWeekends) {
    // Store minutes worked
    var minutesWorked = 0;
    // Validate input
    if (endDate <= startDate) {
      return 0;
    }
    // Loop from your Start to End dates (by hour)
    var current = startDate;
    // Define work range
    var workHoursStart = dayStart;
    var workHoursEnd = dayEnd;
    // Loop while currentDate is less than end Date (by minutes)
    while (current <= endDate) {
      // Is the current time within a work day (and if it occurs on a weekend or not)             
      var currentTime = current.getHours() + (current.getMinutes() / 60);
      if (currentTime >= workHoursStart && currentTime < workHoursEnd && (includeWeekends ? current.getDay() !== 0 && current.getDay() !== 6 : true)) {
        // Increment the number of minutes worked
        minutesWorked++;
      }
      // Increment current time
      current.setTime(current.getTime() + 1000 * 60);
    }
    // Return the number of hours
    return Math.round(minutesWorked / 60 * 100) / 100;
  }
  </script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>

Part 6 Converted date: 2021-12

<!DOCTYPE html>
<html lang="en">

	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<title>Document</title>
	</head>

	<body>
		<script type="text/javascript">
			//a simple date formatting function
			function dateFormat(inputDate, format) {
				//parse the input date
				const date = new Date(inputDate);
				//extract the parts of the date
				const day = date.getDate();
				const month = date.getMonth() + 1;
				const year = date.getFullYear();
				//replace the month
				format = format.replace("MM", month.toString().padStart(2, "0"));
				//replace the year
				if (format.indexOf("yyyy") > -1) {
					format = format.replace("yyyy", year.toString());
				} else if (format.indexOf("yy") > -1) {
					format = format.replace("yy", year.toString().substr(2, 2));
				}
				//replace the day
				format = format.replace("dd", day.toString().padStart(2, "0"));
				return format;
			}
			console.log('Converted date: ' + dateFormat('2021-12-10', 'yyyy-MM'));
		</script>
	</body>

</html>

Part 7: Tính số năm công tác của nhân viên

<!DOCTYPE html>
<html>
<body>

<h2>My First JavaScript</h2>

<script>
function affixZero(int) {
  if (int < 10) { int = '0' + int; }
  return String(int);
}
function calculateAgeOrYear(past,next) {
    var dateRegex = /^\d{4}\-\d{1,2}\-\d{1,2}$/;
    if (!(dateRegex.test(past))) {
      return '';
    }
    var  birth = past.split('-');
    var _birth = parseInt(birth[0] + birth[1] + birth[2]);
    var  today = new Date();
    if(next)
      today = new Date(next);
    var _today = parseInt(today.getFullYear() + affixZero(today.getMonth() + 1) + affixZero(today.getDate()));
    return parseInt((_today - _birth) / 10000);
  }
  var arss = calculateAgeOrYear('1986-05-18','1988-05-20');
  console.log(arss);
</script>

</body>
</html> 

/*Hàm tính số ngày trong tháng javascript*/
const get_day_of_month = (year, month) => {
    return new Date(year, month, 0).getDate();
};
const get_day_of_month = (year, month) => {
    return new Date(year, month, 0).getDate();
};

let thang2 = get_day_of_month(2021, 2); //28
let thang3 = get_day_of_month(2021, 3); //31
/*Hàm tính khoảng cách giữa 2 ngày trong javascript*/
const get_day_of_time = (d1, d2) => {
    let ms1 = d1.getTime();
    let ms2 = d2.getTime();
    return Math.ceil((ms2 - ms1) / (24*60*60*1000));
};
const get_day_of_time = (d1, d2) => {
    let ms1 = d1.getTime();
    let ms2 = d2.getTime();
    return Math.ceil((ms2 - ms1) / (24*60*60*1000));
};

let birthday = new Date('2019-10-08');
console.log(birthday.toUTCString());
//Tue, 08 Oct 2019 00:00:00 GMT

let today = new Date();
console.log(today.toUTCString());
//Wed, 22 Dec 2021 01:30:49 GMT

let time = get_day_of_time(birthday,today)
console.log(time+ ' day');
//807 day
j
https://app.gitbook.com/o/-LYjAG1--qK4zFZOXpzU/s/-M1E4Gk2ppVKb4olmnun/calculate-working-days-between-two-dates-in-javascript-excepts-holidays-ok