Sử dụng một thư viện
Nếu bạn đang thực hiện nhiều công việc ngày, bạn có thể muốn xem xét các thư viện ngày JavaScript như DateJS hoặc Moment.js. Ví dụ, với khoảnh khắc.js, điều này chỉ đơn giản là:
var newDateObj = moment[oldDateObj].add[30, 'm'].toDate[];
Vanilla JavaScript
Đây giống như câu trả lời của Chaos, nhưng trong một dòng:
var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
Trong đó diff
là sự khác biệt trong vài phút bạn muốn từ thời gian ____ 10. Nó thậm chí có thể là tiêu cực.
Hoặc là một chức năng có thể tái sử dụng, nếu bạn cần làm điều này ở nhiều nơi:
function addMinutes[date, minutes] {
return new Date[date.getTime[] + minutes*60000];
}
Và trong trường hợp điều này không rõ ràng, lý do chúng tôi nhân số phút với
var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
1 là để chuyển đổi phút thành mili giây.Hãy cẩn thận với vani JavaScript. Ngày thật khó!
Bạn có thể nghĩ rằng bạn có thể thêm 24 giờ vào một ngày để có được ngày vào ngày mai, phải không? Sai!
addMinutes[myDate, 60*24]; //DO NOT DO THIS
Hóa ra, nếu người dùng quan sát thời gian tiết kiệm ánh sáng ban ngày, một ngày không nhất thiết phải dài 24 giờ. Có một ngày một năm chỉ dài 23 giờ và một ngày một năm dài 25 giờ. Ví dụ, ở hầu hết Hoa Kỳ và Canada, 24 giờ sau nửa đêm, ngày 2 tháng 11 năm 2014, vẫn là ngày 2 tháng 11:
const NOV = 10; //because JS months are off by one...
addMinutes[new Date[2014, NOV, 2], 60*24]; //In USA, prints 11pm on Nov 2, not 12am Nov 3!
Đây là lý do tại sao việc sử dụng một trong những thư viện đã nói ở trên là một cược an toàn hơn nếu bạn phải làm nhiều việc với việc này.using one of the afore-mentioned libraries is a safer bet if you have to do a lot of work with this.
Dưới đây là phiên bản chung chung của chức năng này mà tôi đã viết. Tôi vẫn khuyên bạn nên sử dụng thư viện, nhưng điều đó có thể là quá mức cần thiết/không thể cho dự án của bạn. Cú pháp được mô hình hóa sau chức năng MySQL DATE_ADD.
/**
* Adds time to a date. Modelled after MySQL DATE_ADD function.
* Example: dateAdd[new Date[], 'minute', 30] //returns 30 minutes from now.
* //stackoverflow.com/a/1214753/18511
*
* @param date Date to start with
* @param interval One of: year, quarter, month, week, day, hour, minute, second
* @param units Number of units of the given interval to add.
*/
function dateAdd[date, interval, units] {
if[![date instanceof Date]]
return undefined;
var ret = new Date[date]; //don't change original date
var checkRollover = function[] { if[ret.getDate[] != date.getDate[]] ret.setDate[0];};
switch[String[interval].toLowerCase[]] {
case 'year' : ret.setFullYear[ret.getFullYear[] + units]; checkRollover[]; break;
case 'quarter': ret.setMonth[ret.getMonth[] + 3*units]; checkRollover[]; break;
case 'month' : ret.setMonth[ret.getMonth[] + units]; checkRollover[]; break;
case 'week' : ret.setDate[ret.getDate[] + 7*units]; break;
case 'day' : ret.setDate[ret.getDate[] + units]; break;
case 'hour' : ret.setTime[ret.getTime[] + units*3600000]; break;
case 'minute' : ret.setTime[ret.getTime[] + units*60000]; break;
case 'second' : ret.setTime[ret.getTime[] + units*1000]; break;
default : ret = undefined; break;
}
return ret;
}
Demo JSfiddle làm việc.
Thêm phút vào ngày trong JavaScript #
Để thêm phút vào ngày:
- Sử dụng phương pháp
2 để có được biên bản của ngày cụ thể.var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
- Sử dụng phương thức
3 để đặt biên bản cho ngày.var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
- Phương thức
4 lấy số phút làm tham số và đặt giá trị cho ngày.var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
Copied!
function addMinutes[numOfMinutes, date = new Date[]] { date.setMinutes[date.getMinutes[] + numOfMinutes]; return date; } // 👇️ Add 10 minutes to current Date const result = addMinutes[10]; // 👇️ Add 20 minutes to other Date const date = new Date['2022-03-14T09:25:30.820']; // 👇️ Mon Mar 14 2022 09:45:30 console.log[addMinutes[20, date]];
Chúng tôi đã tạo một hàm có thể tái sử dụng, mất số phút và đối tượng
var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
5 và thêm phút cho ngày.Nếu không có đối tượng
var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
5 được cung cấp cho chức năng, nó sẽ sử dụng ngày hiện tại.Phương thức GetMinutes [] trả về một số từ
var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
7 và var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
8 đại diện cho số phút trong ngày đã cho.Phương thức setMinutes [] lấy một số biểu thị số phút dưới dạng tham số và đặt giá trị vào ngày.
Đối tượng JavaScript
5 tự động quan tâm đến việc lăn hàng giờ, ngày, tháng và năm nếu thêm X phút vào ngày thay đổi giá trị của chúng.var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
Copied!
const date = new Date['2022-03-14T23:25:30.820']; date.setMinutes[date.getMinutes[] + 36]; console.log[date]; // 👉️ Tue Mar 15 2022 00:01:30
Chúng tôi đã thêm
function addMinutes[date, minutes] {
return new Date[date.getTime[] + minutes*60000];
}
0 phút vào ngày, vì vậy giờ và ngày trong tháng phải được điều chỉnh.Đối tượng
var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
5 cũng sẽ tự động chăm sóc điều chỉnh tháng và năm.Lưu ý rằng phương thức
4 làm biến đổi đối tượng var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
5 mà nó đã được gọi. Nếu bạn không muốn thay đổi var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
5 tại chỗ, bạn có thể tạo một bản sao của nó trước khi gọi phương thức.var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
Copied!
function addMinutes[numOfMinutes, date = new Date[]] { const dateCopy = new Date[date.getTime[]]; dateCopy.setMinutes[dateCopy.getMinutes[] + numOfMinutes]; return dateCopy; } const date = new Date['2022-03-14T23:25:30.820']; const result = addMinutes[20, date]; console.log[result]; // 👉️ Mon Mar 14 2022 23:45:30 console.log[date]; // 👉️ Mon Mar 14 2022 23:25:30 [didn't change original]
Phương pháp GetTime trả về số mili giây trôi qua trong khoảng thời gian từ ngày 1 tháng 1 năm 1970 00:00:00 và ngày nhất định.
Chúng tôi đã sử dụng dấu thời gian để tạo một bản sao của đối tượng
5, vì vậy chúng tôi không đột biến nó tại chỗ khi gọi phương thức var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
4.var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
Sao chép ngày khá hữu ích khi bạn phải sử dụng đối tượng
var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
5 gốc ở những nơi khác trong mã của bạn.Nói chung, các đối số chức năng đột biến là một thực tế xấu, vì chuyển cùng một tham số cho cùng một hàm nhiều lần trả về các kết quả khác nhau.
Bạn có thể thấy phương thức
var newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
4 được gọi với các tham số function addMinutes[date, minutes] {
return new Date[date.getTime[] + minutes*60000];
}
9. Các tham số mà phương thức thực hiện là:
0 - Một số đại diện cho biên bản.addMinutes[myDate, 60*24]; //DO NOT DO THIS
1 [Tùy chọn] - Một số đại diện cho giây.addMinutes[myDate, 60*24]; //DO NOT DO THIS
2 [Tùy chọn] - Một số giữaaddMinutes[myDate, 60*24]; //DO NOT DO THIS
7 vàvar newDateObj = new Date[oldDateObj.getTime[] + diff*60000];
4 đại diện cho mili giây.addMinutes[myDate, 60*24]; //DO NOT DO THIS
Nếu bạn không chỉ định các giá trị cho
addMinutes[myDate, 60*24]; //DO NOT DO THIS
1 và addMinutes[myDate, 60*24]; //DO NOT DO THIS
2, các giá trị được trả về từ các phương thức addMinutes[myDate, 60*24]; //DO NOT DO THIS
7 và addMinutes[myDate, 60*24]; //DO NOT DO THIS
8 được sử dụng.