Cộng trừ ngày tháng trong JavaScript | Laptrinhcanban.com

Cộng trừ ngày tháng trong JavaScript

Hướng dẫn cách cộng trừ ngày tháng trong JavaScript. Bạn sẽ học được cách sử dụng các toán tử số học và các hàm getDate(), getMonth() để cộng trừ ngày tháng trong JavaScript sau bài học này.

Logic cộng trừ ngày tháng trong JavaScript

Ví dụ chúng ta có một date instance chứa thông tin ngày tháng như sau:

let d = new Date('2021-10-08');
console.log(d.toUTCString());
// Fri, 08 Oct 2021 00:00:00 GMT

Chúng ta có thể thấy trong một date instance biểu diễn thời gian như trên được tạo bởi các đơn vị về thời gian như ngày(08), tháng(Oct), năm(2021), hay giờ phút giây v.v..

Lại nữa, thời gian ở trên cũng có thể chuyển thành mili giây, giống như sau đây:

let d = new Date('2021-10-08');
console.log(d.getTime());
// 1633651200000

Từ 2 cách biểu thị thông tin thời gian như trên, chúng ta có thể thấy rõ, sẽ có 2 phương pháp để có thể tiến hành cộng trừ ngày tháng trong JavaScript, đó chính là thay đổi mili giây đại diện cho thời gian, hoặc thay đổi từng đơn vị thời gian tạo nên thời gian đó.

Ví dụ, đối với phương pháp thay đổi mili giây đại diện cho thời gian, để trừ 2 ngày trong JavaScript so với thời gian ban đầu, do 2 ngày có tất cả 2day x 24h x 3600s x 1000ms = 172800000 mili giây nên chúng ta chỉ cần trừ số mili giây này từ số mili giây ban đầu như sau:

let d = new Date('2021-10-08');
console.log(d.toUTCString());

/*Chuyển date sang mili giây*/
let milis = d.getTime();

/*Trừ 172800000 mili giây (tương đương với trừ 2 ngày) từ thời gian ban đầu*/
let new_milis= milis - 172800000;

/*Và chuyển lại mili giây về date thông qua hàm new Date*/
let d2 = new Date(new_milis);

console.log(d2.toUTCString());

Và kết quả, 2 ngày sẽ bị trừ đi từ ngày ban đầu như sau:

Fri, 08 Oct 2021 00:00:00 GMT
Wed, 06 Oct 2021 00:00:00 GMT

Tuy nhiên thì với cách cộng trừ ngày tháng trong JavaScript này thì chúng ta bắt buộc phải tính toán kỹ lưỡng về mili giây cần phải cộng trừ vào mili giây đại diện của thời gian ban đầu. Do đó, thay vì cách tính toán thế này thì chúng ta nên sử dụng tới phương pháp cộng trừ ngày tháng trong JavaScript thông qua việc thay đổi từng đơn vị thời gian như thay đổi ngày, thay đổi tháng, thay đổi năm v.v.. mà Kiyoshi sẽ hướng dẫn sau đây.

Cộng ngày trong JavaScript

Để cộng ngày trong JavaScript, chúng ta thực thi tuần tự các xử lý sau đây:

  1. Sử dụng phương thức getDate() để lấy số ngày trong date instance ban đầu
  2. Tiến hành phép cộng để thay đổi số ngày vừa lấy tới giá trị mong muốn,
  3. Sửa số ngày trong date instance ban đầu thành số ngày thu được ở trên bằng phương thức setDate()

Ví dụ, chúng ta có thể cộng ngày trong JavaScript như sau:

let d = new Date('2021-10-08');
console.log(d.toUTCString());

//Lấy số ngày từ thời gian chỉ định
let day = d.getDate();

//Cộng số ngày mong muốn, ví dụ chúng ta cộng thêm 2 ngày
let new_day = day + 2;

//Sửa số ngày trong date instance ban đầu thành new_day
d.setDate(new_day);

console.log(d.toUTCString());

Và kết quả:

Fri, 08 Oct 2021 00:00:00 GMT
Sun, 10 Oct 2021 00:00:00 GMT

Thực tế trong chương trình Javascript, chúng ta sẽ viết gọn lại tất cả các xử lý ở trên thành một dòng như sau:

let d = new Date('2021-10-08');

// Cộng 2 ngày trong JavaScript
d.setDate(d.getDate() + 2);

console.log(d.toUTCString());
//Sun, 10 Oct 2021 00:00:00 GMT

Trừ ngày trong JavaScript

Để trừ ngày trong JavaScript, chúng ta cũng thực hiện tương tự các xử lý khi cộng ngày trong JavaScript ở trên.

  1. Sử dụng phương thức getDate() để lấy số ngày trong date instance ban đầu
  2. Tiến hành phép cộng để thay đổi số ngày vừa lấy tới giá trị mong muốn,
  3. Sửa số ngày trong date instance ban đầu thành số ngày thu được ở trên bằng phương thức setDate()

Ví dụ, chúng ta có thể trừ 2 ngày trong JavaScript như sau:

let d = new Date('2021-10-08');
console.log(d.toUTCString());

//Lấy số ngày từ thời gian chỉ định
let day = d.getDate();

//Trừ số ngày mong muốn, ví dụ chúng ta trừ đi 2 ngày
let new_day = day - 2;

//Sửa số ngày trong date instance ban đầu thành new_day
d.setDate(new_day);

console.log(d.toUTCString());

Và kết quả:

Fri, 08 Oct 2021 00:00:00 GMT
Wed, 06 Oct 2021 00:00:00 GMT

Thực tế trong chương trình Javascript, chúng ta sẽ viết gọn lại tất cả các xử lý ở trên thành một dòng như sau:

let d = new Date('2021-10-08');

// Trừ 2 ngày trong JavaScript
d.setDate(d.getDate() - 2);

console.log(d.toUTCString());
//Sun, 10 Oct 2021 00:00:00 GMT

Cộng tháng trong JavaScript

Để cộng tháng trong JavaScript, chúng ta cũng làm hoàn toàn tương tự như với cộng ngày trong JavaScript. Điểm khác biệt duy nhất ở đây là chúng ta sử dụng hàm getMonth() và hàm setMonth() sử dụng để xử lý tháng trong JavaScript như sau:

  1. Sử dụng phương thức getMonth() để lấy số tháng trong date instance ban đầu
  2. Tiến hành phép cộng để thay đổi số tháng vừa lấy tới giá trị mong muốn,
  3. Sửa số tháng trong date instance ban đầu thành số tháng thu được ở trên bằng phương thức setMonth()

Ví dụ, chúng ta có thể cộng tháng trong JavaScript như sau:

let d = new Date('2021-10-08');
console.log(d.toUTCString());

//Lấy số tháng từ thời gian chỉ định
let month = d.getMonth();

//Cộng số tháng mong muốn, ví dụ chúng ta cộng thêm 2 tháng
let new_month = month + 2;

//Sửa số tháng trong date instance ban đầu thành new_month
d.setMonth(new_month);

console.log(d.toUTCString());

Và kết quả, 2 tháng sẽ được cộng thêm vào thời gian ban đầu như sau:

Fri, 08 Oct 2021 00:00:00 GMT
Wed, 08 Dec 2021 00:00:00 GMT

Thực tế trong chương trình Javascript, chúng ta sẽ viết gọn lại tất cả các xử lý ở trên thành một dòng như sau:

let d = new Date('2021-10-08');

// Cộng thêm 2 tháng trong JavaScript
d.getMonth(d.getMonth() + 2);

console.log(d.toUTCString());
//Fri, 08 Oct 2021 00:00:00 GMT

Trừ tháng trong JavaScript

Để trừ tháng trong JavaScript, chúng ta cũng thực hiện tương tự các xử lý khi cộng tháng trong JavaScript ở trên.

  1. Sử dụng phương thức getMonth() để lấy số tháng trong date instance ban đầu
  2. Tiến hành phép trừ để thay đổi số tháng vừa lấy tới giá trị mong muốn,
  3. Sửa số tháng trong date instance ban đầu thành số tháng thu được ở trên bằng phương thức setMonth()

Ví dụ, chúng ta có thể trừ tháng trong JavaScript như sau:

let d = new Date('2021-10-08');
console.log(d.toUTCString());

//Lấy số tháng từ thời gian chỉ định
let month = d.getMonth();

//Trừ số tháng mong muốn, ví dụ chúng ta trừ đi 2 tháng
let new_month = month - 2;

//Sửa số tháng trong date instance ban đầu thành new_month
d.setMonth(new_month);

console.log(d.toUTCString());

Và kết quả, 2 tháng sẽ được trừ đi từ thời gian ban đầu như sau:

Fri, 08 Oct 2021 00:00:00 GMT
Sun, 08 Aug 2021 00:00:00 GMT

Thực tế trong chương trình Javascript, chúng ta sẽ viết gọn lại tất cả các xử lý ở trên thành một dòng như sau:

let d = new Date('2021-10-08');

// Trừ 2 tháng trong JavaScript
d.getMonth(d.getMonth() - 2);

console.log(d.toUTCString());
//Fri, 08 Oct 2021 00:00:00 GMT

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách cộng trừ ngày tháng trong JavaScript rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về JavaScript trong các bài học tiếp theo.

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.