Tanggal Saat Ini diubah menjadi 10 hari sebelum dan 10 hari setelahnya
Saya memiliki kode ini di mana saya mengonversi tanggal sekarang ke format ini 2020-08-20
. Tapi bagaimana cara mengubahnya untuk memberi saya tanggal 10 hari hari from
ini dan 10 hari hari before
ini.
misalnya hari ini 2020-08-20
saya mencoba untuk mendapatkan 10 hari dari hari ini2020-08-30
Ini kode saya
const dateConverter = (dateIn) => {
var year = dateIn.getFullYear();
var month = dateIn.getMonth() + 1; // getMonth() is zero-based
var day = dateIn.getDate();
return year + "-" + month.toString().padStart(2, "0") + "-" + day.toString().padStart(2, "0");
}
var today = new Date();
console.log(dateConverter(today));
Jawaban
Ini sedikit rumit. Pertama-tama, setel jam dari tanggal ke 12 untuk menghindari masalah dengan perubahan musim panas / musim dingin. Kemudian gunakan getDate
tambahkan 10 untuk hari ekstra dan setDate
dengan nilai baru. Sekarang Anda memiliki nilai dalam milidetik, hasilkan tanggal baru ini untuk mendapatkan objek tanggal. Untuk tanggal kedua kurangi 20 hari karena tanggal asli diubah oleh tindakan sebelumnya dan lakukan hal yang sama.
Format keluaran untuk tanggal dengan getFullYear
, getMonth
dan getDate
. Karena bulan ditangani di JS dari 0 hingga 11 tambahkan 1 bulan. Bulan dan hari bisa 1 digit tetapi Anda menginginkannya 2 digit, jadi tambahkan sebelum string "0"
dan dapatkan 2 karakter terakhir dengannya slice
.
Lakukan format untuk kedua tanggal dan kembalikan sebagai array.
const dateConverter = (dateIn) => {
dateIn.setHours(12);
let dateIn10days = new Date(dateIn.setDate(dateIn.getDate() + 10));
let dateFor10days = new Date(dateIn.setDate(dateIn.getDate() - 20));
let strIn10Days = dateIn10days.getFullYear() + '-' + ('0' +(dateIn10days.getMonth()+1)).slice(-2) + '-' + ('0' + dateIn10days.getDate()).slice(-2);
let strFor10Days = dateFor10days.getFullYear() + '-' + ('0' +(dateFor10days.getMonth()+1)).slice(-2) + '-' + ('0' + dateFor10days.getDate()).slice(-2);
return [strFor10Days, strIn10Days];
}
let today = new Date();
console.log(dateConverter(today));
Kode ini akan membantu Anda
Referensi tanggal penghitungan JavaScript dari tanggal hari ini hingga 7 hari sebelumnya
karena setelah 10 hari cukup ubah - menjadi +
const dateConverter = (dateIn) => {
var dates ={};
var days = 10; // Days you want to subtract
for(let i=0;i<days;i++){
var date = dateIn;
var last = new Date(date.getTime() - (i * 24 * 60 * 60 * 1000));
var day = last.getDate();
var month= last.getMonth()+1;
var year= last.getFullYear();
dates[i] = year + "-" + month.toString().padStart(2, "0") + "-" + day.toString().padStart(2, "0");
}
return dates
}
var today = new Date();
console.log(dateConverter(today));
Coba ini
const dateConverter = (dateIn) => {
var year = dateIn.getFullYear();
var month = dateIn.getMonth() + 1; // getMonth() is zero-based
var day = dateIn.getDate();
return year + "-" + month.toString().padStart(2, "0") + "-" + day.toString().padStart(2, "0");
}
var today = new Date();
var numberOfDaysToAdd = 10;
var tenDaysPlus = today.setDate(today.getDate() + numberOfDaysToAdd);
console.log(dateConverter(today));
var today = new Date();
var numberOfDaysToSubtract = 10;
var tenDaysMinus = today.setDate(today.getDate() - numberOfDaysToSubtract);
console.log(dateConverter(today));
Saya akan menyarankan Anda untuk menggunakan pustaka momen tetapi Anda masih menginginkan javascript biasa
const convert = (date) => {
const pastDate = new Date(date)
pastDate.setDate(pastDate.getDate() - 10);
const futureDate = new Date(date)
futureDate.setDate(futureDate.getDate() + 10);
return { pastDate, futureDate }
}
panggilan fungsi konversi dengan tanggal apapun.
Saya telah mengotak-atik itu sebelumnya juga. Tetapi pada Stack Overflow ini Anda dapat menemukan jawaban yang sangat bagus: Tambahkan hari ke JavaScript Tanggal
Date.prototype.addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
}
var date = new Date();
alert(date.addDays(5));
Ini adalah kode yang diambil dari postingan itu.
Untuk mengurangi hari, cukup ganti "+ hari" dengan "- hari"
Semoga ini menyelesaikan masalah Anda!
Anda dapat mengonversi semua tanggal menjadi timestamp
dan kemudian menghitung dengan mereka:
const dateTimestamp = new Date("2020-10-10").getTime()
const milisecondsInADay = 60*60*24*1000
const milisecondsInTenDays = milisecondsInADay * 10
const beforeDate = new Date(dateTimestamp - milisecondsInTenDays)
const afterDate = new Date(dateTimestamp + milisecondsInTenDays)
console.log("before", beforeDate)
console.log("after", afterDate)
console.log("initially", new Date(dateTimestamp))