Có ai biết một cách dễ dàng để hẹn hò (ví dụ Hôm nay) và quay lại X ngày không?
Vì vậy, ví dụ, nếu tôi muốn tính ngày 5 ngày trước ngày hôm nay.
Có ai biết một cách dễ dàng để hẹn hò (ví dụ Hôm nay) và quay lại X ngày không?
Vì vậy, ví dụ, nếu tôi muốn tính ngày 5 ngày trước ngày hôm nay.
Câu trả lời:
Hãy thử một cái gì đó như thế này:
var d = new Date();
d.setDate(d.getDate()-5);
Lưu ý rằng điều này sửa đổi đối tượng ngày và trả về giá trị thời gian của ngày cập nhật.
var d = new Date();
document.write('Today is: ' + d.toLocaleString());
d.setDate(d.getDate() - 5);
document.write('<br>5 days ago was: ' + d.toLocaleString());
new Date(new Date().setDate(new Date().getDate()-5))
- đó sẽ là 5 ngày trước. Trong ví dụ về câu trả lời, chuyển nó sang một ngày mới để có được một đối tượng ngày. Vì vậy, new Date(d)
là những gì bạn muốn.
setDate(-1)
sẽ đặt ngày đến ngày cuối cùng của tháng
toString
các phương pháp như toISOString
, toDateString
vv
var dateOffset = (24*60*60*1000) * 5; //5 days
var myDate = new Date();
myDate.setTime(myDate.getTime() - dateOffset);
Nếu bạn đang thực hiện nhiều thao tác ngày khó khăn trong ứng dụng web của mình, DateJS sẽ giúp cuộc sống của bạn dễ dàng hơn nhiều:
getTime()
và setTime()
là mili giây kể từ kỷ nguyên. Nó không quan trọng nếu thời gian vượt qua một ranh giới năm.
Nó đi một cái gì đó như thế này:
var d = new Date(); // today!
var x = 5; // go back 5 days!
d.setDate(d.getDate() - x);
function getDaysAgo(b){var a=new Date;a.setDate(a.getDate()-b);return a};
sau đó chỉ làvar daysAgo45 = getDaysAgo(45);
Tôi nhận thấy rằng getDays + X không hoạt động trên ranh giới ngày / tháng. Sử dụng getTime hoạt động miễn là ngày của bạn không trước năm 1970.
var todayDate = new Date(), weekDate = new Date();
weekDate.setTime(todayDate.getTime()-(7*24*3600000));
có được khoảnh khắc.js. Tất cả những đứa trẻ mát mẻ sử dụng nó. Nó có nhiều tùy chọn định dạng hơn, v.v.
var n = 5;
var dateMnsFive = moment(<your date>).subtract(n , 'day');
Không bắt buộc! Chuyển đổi sang JS Ngày obj cho ràng buộc Angular.
var date = new Date(dateMnsFive.toISOString());
Không bắt buộc! định dạng
var date = dateMnsFive.format("YYYY-MM-DD");
Tôi đã tạo nguyên mẫu này cho Ngày để tôi có thể chuyển các giá trị âm để trừ ngày và giá trị dương để thêm ngày.
if(!Date.prototype.adjustDate){
Date.prototype.adjustDate = function(days){
var date;
days = days || 0;
if(days === 0){
date = new Date( this.getTime() );
} else if(days > 0) {
date = new Date( this.getTime() );
date.setDate(date.getDate() + days);
} else {
date = new Date(
this.getFullYear(),
this.getMonth(),
this.getDate() - Math.abs(days),
this.getHours(),
this.getMinutes(),
this.getSeconds(),
this.getMilliseconds()
);
}
this.setTime(date.getTime());
return this;
};
}
Vì vậy, để sử dụng nó tôi có thể chỉ cần viết:
var date_subtract = new Date().adjustDate(-4),
date_add = new Date().adjustDate(4);
d.setDate(d.getDate() + days)
với cả giá trị dương và âm trong nhiều ngày để cộng và trừ ngày tương ứng. Và nó nên hoạt động trên ví dụ (như các phương thức Date khác làm), không tạo và trả về một bản sao.
Một vài trong số các giải pháp hiện có đã gần, nhưng không hoàn toàn chính xác những gì tôi muốn. Hàm này hoạt động với cả giá trị dương hoặc âm và xử lý các trường hợp biên.
function addDays(date, days) {
return new Date(
date.getFullYear(),
date.getMonth(),
date.getDate() + days,
date.getHours(),
date.getMinutes(),
date.getSeconds(),
date.getMilliseconds()
);
}
Tôi thích làm toán trong một phần nghìn giây. Vì vậy, sử dụngDate.now()
var newDate = Date.now() + -5*24*3600*1000; // date 5 days ago in milliseconds
và nếu bạn thích nó được định dạng
new Date(newDate).toString(); // or .toUTCString or .toISOString ...
LƯU Ý: Date.now()
không hoạt động trong các trình duyệt cũ hơn (ví dụ IE8 tôi nghĩ). Polyfill đây .
@socket Pair chỉ ra sự cẩu thả của tôi. Như ông / ông nói "Một ngày nào đó trong năm có 23 giờ và khoảng 25 do quy tắc múi giờ".
Để mở rộng về điều đó, câu trả lời ở trên sẽ có sự thiếu chính xác về ánh sáng ban ngày trong trường hợp bạn muốn tính toán LỘC 5 ngày trước trong một múi giờ với thay đổi ánh sáng ban ngày và bạn
Date.now()
cung cấp cho bạn ĐỊA PHƯƠNG hiện tại, hoặc.toString()
trả về ngày cục bộ và do đó không tương thích với Date.now()
ngày cơ sở trong UTC. Tuy nhiên, nó hoạt động nếu bạn đang làm toán hoàn toàn bằng UTC, vd
A. Bạn muốn ngày UTC 5 ngày trước từ NOW (UTC)
var newDate = Date.now() + -5*24*3600*1000; // date 5 days ago in milliseconds UTC
new Date(newDate).toUTCString(); // or .toISOString(), BUT NOT toString
B. Bạn bắt đầu với ngày cơ sở UTC khác với "ngay bây giờ", bằng cách sử dụng Date.UTC()
newDate = new Date(Date.UTC(2015, 3, 1)).getTime() + -5*24*3600000;
new Date(newDate).toUTCString(); // or .toISOString BUT NOT toString
Tôi thấy một vấn đề với phương thức getDate () / setDate () là nó quá dễ dàng biến mọi thứ thành mili giây và cú pháp đôi khi rất khó để tôi làm theo.
Thay vào đó, tôi thích làm việc với thực tế là 1 ngày = 86.400.000 mili giây.
Vì vậy, đối với câu hỏi cụ thể của bạn:
today = new Date()
days = 86400000 //number of milliseconds in a day
fiveDaysAgo = new Date(today - (5*days))
Hoạt động như một lá bùa.
Tôi sử dụng phương pháp này mọi lúc để thực hiện các phép tính 30/60/365 ngày.
Bạn có thể dễ dàng ngoại suy điều này để tạo ra các đơn vị thời gian trong nhiều tháng, nhiều năm, v.v.
chia ngày của bạn thành nhiều phần, sau đó trả lại một Ngày mới với các giá trị được điều chỉnh
function DateAdd(date, type, amount){
var y = date.getFullYear(),
m = date.getMonth(),
d = date.getDate();
if(type === 'y'){
y += amount;
};
if(type === 'm'){
m += amount;
};
if(type === 'd'){
d += amount;
};
return new Date(y, m, d);
}
Hãy nhớ rằng các tháng là không dựa trên, nhưng ngày thì không. tức là Ngày mới (2009, 1, 1) == 01 tháng 2 năm 2009, Ngày mới (2009, 1, 0) == 31 tháng 1 năm 2009;
Không sử dụng biến thứ hai, bạn có thể thay thế 7 cho trở lại x ngày của mình:
let d=new Date(new Date().getTime() - (7 * 24 * 60 * 60 * 1000))
function addDays (date, daysToAdd) {
var _24HoursInMilliseconds = 86400000;
return new Date(date.getTime() + daysToAdd * _24HoursInMilliseconds);
};
var now = new Date();
var yesterday = addDays(now, - 1);
var tomorrow = addDays(now, 1);
Tôi đã tạo ra một chức năng để thao tác ngày. bạn có thể thêm hoặc bớt bất kỳ số ngày, giờ, phút.
function dateManipulation(date, days, hrs, mins, operator) {
date = new Date(date);
if (operator == "-") {
var durationInMs = (((24 * days) * 60) + (hrs * 60) + mins) * 60000;
var newDate = new Date(date.getTime() - durationInMs);
} else {
var durationInMs = (((24 * days) * 60) + (hrs * 60) + mins) * 60000;
var newDate = new Date(date.getTime() + durationInMs);
}
return newDate;
}
Bây giờ, gọi hàm này bằng cách truyền tham số. Ví dụ, đây là một cuộc gọi chức năng để nhận được ngày trước 3 ngày kể từ hôm nay.
var today = new Date();
var newDate = dateManipulation(today, 3, 0, 0, "-");
Sử dụng MomentJS .
function getXDaysBeforeDate(referenceDate, x) {
return moment(referenceDate).subtract(x , 'day').format('MMMM Do YYYY, h:mm:ss a');
}
var yourDate = new Date(); // let's say today
var valueOfX = 7; // let's say 7 days before
console.log(getXDaysBeforeDate(yourDate, valueOfX));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
Các câu trả lời hàng đầu đã dẫn đến một lỗi trong mã của tôi, trong đó vào ngày đầu tiên của tháng, nó sẽ đặt một ngày trong tương lai trong tháng hiện tại. Đây là những gì tôi đã làm,
curDate = new Date(); // Took current date as an example
prvDate = new Date(0); // Date set to epoch 0
prvDate.setUTCMilliseconds((curDate - (5 * 24 * 60 * 60 * 1000))); //Set epoch time
Một cách dễ dàng để quản lý ngày là sử dụng Moment.js
Bạn có thể sử dụng add
. Thí dụ
var startdate = "20.03.2014";
var new_date = moment(startdate, "DD.MM.YYYY");
new_date.add(5, 'days'); //Add 5 days to start date
alert(new_date);
đối với tôi, tất cả các kết hợp đều hoạt động tốt với đoạn mã dưới đây, đoạn mã dành cho triển khai Angular-2, nếu bạn cần thêm ngày, hãy chuyển số dương ngày, nếu bạn cần phải vượt qua số âm của ngày.
function addSubstractDays(date: Date, numberofDays: number): Date {
let d = new Date(date);
return new Date(
d.getFullYear(),
d.getMonth(),
(d.getDate() + numberofDays)
);
}
Tôi nhận được số dặm tốt từ date.js:
d = new Date();
d.add(-10).days(); // subtract 10 days
Đẹp!
Trang web bao gồm vẻ đẹp này:
Datejs không chỉ phân tích chuỗi, nó cắt chúng thành hai
Nếu bạn muốn trừ cả một số ngày và định dạng ngày của bạn ở định dạng có thể đọc được, bạn nên xem xét việc tạo một DateHelper
đối tượng tùy chỉnh trông giống như thế này:
var DateHelper = {
addDays : function(aDate, numberOfDays) {
aDate.setDate(aDate.getDate() + numberOfDays); // Add numberOfDays
return aDate; // Return the date
},
format : function format(date) {
return [
("0" + date.getDate()).slice(-2), // Get day and pad it with zeroes
("0" + (date.getMonth()+1)).slice(-2), // Get month and pad it with zeroes
date.getFullYear() // Get full year
].join('/'); // Glue the pieces together
}
}
// With this helper, you can now just use one line of readable code to :
// ---------------------------------------------------------------------
// 1. Get the current date
// 2. Subtract 5 days
// 3. Format it
// 4. Output it
// ---------------------------------------------------------------------
document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), -5));
(xem thêm Fiddle này )
Xem mã sau đây, trừ các ngày kể từ ngày hiện tại. Ngoài ra, đặt tháng theo ngày được trừ.
var today = new Date();
var substract_no_of_days = 25;
today.setTime(today.getTime() - substract_no_of_days* 24 * 60 * 60 * 1000);
var substracted_date = (today.getMonth()+1) + "/" +today.getDate() + "/" + today.getFullYear();
alert(substracted_date);
Khi đặt ngày, ngày chuyển đổi thành mili giây, vì vậy bạn cần chuyển đổi lại thành ngày:
Phương pháp này cũng có tính đến, thay đổi năm mới, vv
function addDays( date, days ) {
var dateInMs = date.setDate(date.getDate() - days);
return new Date(dateInMs);
}
var date_from = new Date();
var date_to = addDays( new Date(), parseInt(days) );
Bạn có thể sử dụng Javascript.
var CurrDate = new Date(); // Current Date
var numberOfDays = 5;
var days = CurrDate.setDate(CurrDate.getDate() + numberOfDays);
alert(days); // It will print 5 days before today
Đối với PHP,
$date = date('Y-m-d', strtotime("-5 days")); // it shows 5 days before today.
echo $date;
Hy vọng nó sẽ giúp bạn.
Tôi đã chuyển đổi thành mili giây và các ngày được khấu trừ vào tháng khác và năm sẽ không thay đổi và hợp lý
var numberOfDays = 10;//number of days need to deducted or added
var date = "01-01-2018"// date need to change
var dt = new Date(parseInt(date.substring(6), 10), // Year
parseInt(date.substring(3,5), 10) - 1, // Month (0-11)
parseInt(date.substring(0,2), 10));
var new_dt = dt.setMilliseconds(dt.getMilliseconds() - numberOfDays*24*60*60*1000);
new_dt = new Date(new_dt);
var changed_date = new_dt.getDate()+"-"+(new_dt.getMonth()+1)+"-"+new_dt.getFullYear();
Hy vọng giúp
var date = new Date();
var day = date.getDate();
var mnth = date.getMonth() + 1;
var fDate = day + '/' + mnth + '/' + date.getFullYear();
document.write('Today is: ' + fDate);
var subDate = date.setDate(date.getDate() - 1);
var todate = new Date(subDate);
var today = todate.getDate();
var tomnth = todate.getMonth() + 1;
var endDate = today + '/' + tomnth + '/' + todate.getFullYear();
document.write('<br>1 days ago was: ' + endDate );
Sử dụng cú pháp hàm JavaScript hiện đại
const getDaysPastDate = (daysBefore, date = new Date) => new Date(date - (1000 * 60 * 60 * 24 * daysBefore));
console.log(getDaysPastDate(1)); // yesterday
Hãy thử một cái gì đó như thế này
dateLimit = (curDate, limit) => {
offset = curDate.getDate() + limit
return new Date( curDate.setDate( offset) )
}
currentDate có thể là bất kỳ ngày nào
giới hạn có thể là sự khác biệt về số ngày (tích cực cho tương lai và tiêu cực cho quá khứ)
Điều này sẽ cung cấp cho bạn kết quả 10 ngày qua 110% làm việc mà bạn sẽ không gặp phải bất kỳ loại vấn đề nào
var date = new Date();
var day=date.getDate();
var month=date.getMonth() + 1;
var year=date.getFullYear();
var startDate=day+"/"+month+"/"+year;
var dayBeforeNineDays=moment().subtract(10, 'days').format('DD/MM/YYYY');
startDate=dayBeforeNineDays;
var endDate=day+"/"+month+"/"+year;
bạn có thể thay đổi ngày trừ theo yêu cầu của bạn
var daysToSubtract = 3;
$.datepicker.formatDate('yy/mm/dd', new Date() - daysToSubtract) ;
var d = new Date();
document.write('Today is: ' + d.toLocaleString());
d.setDate(d.getDate() - 31);
document.write('<br>5 days ago was: ' + d.toLocaleString());