আমার জাভাস্ক্রিপ্টে একটি দিন তারিখের মান বাড়ানো দরকার।
উদাহরণস্বরূপ, আমার তারিখের মান আছে 2010-09-11 এবং আমার পরের দিনের তারিখটি একটি জাভাস্ক্রিপ্ট ভেরিয়েবলে সঞ্চয় করা দরকার।
আমি কীভাবে কোনও দিন বাড়িয়ে দিতে পারি?
আমার জাভাস্ক্রিপ্টে একটি দিন তারিখের মান বাড়ানো দরকার।
উদাহরণস্বরূপ, আমার তারিখের মান আছে 2010-09-11 এবং আমার পরের দিনের তারিখটি একটি জাভাস্ক্রিপ্ট ভেরিয়েবলে সঞ্চয় করা দরকার।
আমি কীভাবে কোনও দিন বাড়িয়ে দিতে পারি?
উত্তর:
আপনার জন্য তিনটি বিকল্প:
Date
অবজেক্ট (কোনও লাইব্রেরি নেই) ব্যবহার করে:# 1 এর জন্য আমার পূর্ববর্তী উত্তরটি ভুল ছিল (এটি 24 ঘন্টা যোগ করেছে, দিবালোকের সময় সাশ্রয় করার সময় এবং পরে ট্রানজিশনের জন্য অ্যাকাউন্টে ব্যর্থ হয়েছিল; চতুর হিউম্যান নির্দেশ করেছেন যে এটি পূর্ব টাইমজোন November নভেম্বর, ২০১০ এ ব্যর্থ হবে)। পরিবর্তে, জিগার উত্তরটি লাইব্রেরি ছাড়াই এটি করার সঠিক উপায়:
var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
এটি এমনকি এক মাসের শেষ দিন (বা বছর) পর্যন্ত কাজ করে, কারণ জাভাস্ক্রিপ্টের তারিখ অবজেক্ট রোলওভার সম্পর্কে স্মার্ট:
(এই উত্তরটি বর্তমানে গৃহীত হয়েছে, সুতরাং আমি এটি মুছে ফেলতে পারি না it এটি গ্রহণ করার আগে আমি ওপিকে প্রস্তাব দিয়েছিলাম তারা জিগারকে গ্রহণ করে তবে সম্ভবত তারা এই উত্তরটি তালিকার # 2 বা # 3 আইটেমের জন্য গ্রহণ করেছেন))
var today = moment();
var tomorrow = moment(today).add(1, 'days');
(যে বিষয়ে সতর্ক থাকুন add
মডিফাই উদাহরণস্বরূপ, আপনি তে এটি কল বরং একটি নতুন উদাহরণ ফেরার চেয়ে, তাই today.add(1, 'days')
পরিবর্তন হবে today
। যে কারণে আমরা একটি ক্লোনিং অপ দিয়ে শুরু var tomorrow = ...
।)
var today = new Date(); // Or Date.today()
var tomorrow = today.add(1).day();
Date
কনস্ট্রাক্টর ( new Date(year, month, date)
) এ ফিড করতে পারেন ; স্পেসিফিকেশন 15.9.2.1 বিভাগ দেখুন ; আপনি যদি অনেকগুলি বিন্যাস গ্রহণ করতে চান তবে অবশ্যই ডেটজেএসে একবার দেখুন ।
Date.parse
(যা আপনি পরে খাওয়াতে পারেন এমন অনেক মিলি সেকেন্ডের পরিমাণ দেয় new Date(ms)
)। তবে সাবধান, এটি ব্রাউজার থেকে ব্রাউজারে পরিবর্তিত হতে পারে। সম্প্রতি অবধি, বাস্তবায়নগুলি তারা যা কিছু করতে চেয়েছিল কেবল তার সম্পর্কে করতে পারে Date.parse
। নতুন 5 তম সংস্করণের স্পেসিফিকেশনটিতে এখন একটি ন্যূনতম ফর্ম্যাট রয়েছে যা অবশ্যই গ্রহণযোগ্য হবে, তবে আমি এখনও এটিতে বিশ্বাস করি না।
x = new Date(); x2 = new Date(x.getTime() + 1000)
, যেখানে 1000 মিলিসেকেন্ড বৃদ্ধি incre
Date
বস্তু পরিবর্তনযোগ্য। আপনি একই Date
বস্তুকে অ্যারেতে তিনবার সঞ্চয় করছেন । আপনি যদি তিনটি পৃথক Date
অবজেক্ট চান , আপনাকে তিনটি অবজেক্ট তৈরি করতে হবে:var unavailableDates = []; for (var d = new Date('2017-05-11'); d < new Date('2017-05-13'); d.setDate(d.getDate() + 1)) { unavailableDates.push(new Date(+d)); }
var myDate = new Date();
//add a day to the date
myDate.setDate(myDate.getDate() + 1);
new Date("2009-09-11")
তবে ফায়ারফক্স তা গ্রহণ করে না। আমি মনে করি অধিকাংশ ব্রাউজার গ্রহণ new Date("2009/09/11")
, যাতে একটি সহজ সমাধান হবে var arrivalDate = document.getElementById('arival_date').value; var dayAfter = new Date(arrival_date.replace(/-/g, '/')); dayAfter.setDate(dayAfter.getDate()+1);
।
-
সঙ্গে /
এবং প্রত্যাশী যে ব্রাউজার তা গ্রহণ করবে অংশে স্ট্রিং বিভক্ত করতে হবে: var dateParts = arrivalDate.split('-'); var y = parseInt(dateParts[0], 10); var m = parseInt(dateParts[1], 10); var d = parseInt(dateParts[2], 10); var dayAfter = new Date(y, m-1, d+1);
মনে রাখবেন আমরা ব্যবহার করছেন m-1
এখানে, কারণ জাভাস্ক্রিপ্ট মাসের enum মান (জানুয়ারী হচ্ছে 0, না 1), এবং d+1
কারণ আমরা 'ইতিমধ্যে প্রাথমিক কার্যক্রমে ইনক্রিমেন্টেশন করছেন (এটি 29 ফেব্রুয়ারি ইত্যাদির জন্য স্বয়ংক্রিয়ভাবে ঠিক হয়ে যাবে)
এই উত্তরের উদাহরণগুলির মধ্যে কোনওটিই ডাইটলাইট সেভিং টাইম অ্যাডজাস্টমেন্টের দিনগুলি নিয়ে কাজ করে বলে মনে হয় না। সেই দিনগুলিতে, দিনে এক ঘন্টার সংখ্যা 24 হয় না (তারা 23 বা 25 হয়, যদি আপনি "সামনের দিকে এগিয়ে চলে" বা "পিছিয়ে পড়া" এর উপর নির্ভর করে))
নীচের অ্যাডডেস জাভাস্ক্রিপ্ট ফাংশন দিবালোক সংরক্ষণ সময় জন্য অ্যাকাউন্ট:
function addDays(date, amount) {
var tzOff = date.getTimezoneOffset() * 60 * 1000,
t = date.getTime(),
d = new Date(),
tzOff2;
t += (1000 * 60 * 60 * 24) * amount;
d.setTime(t);
tzOff2 = d.getTimezoneOffset() * 60 * 1000;
if (tzOff != tzOff2) {
var diff = tzOff2 - tzOff;
t += diff;
d.setTime(t);
}
return d;
}
ফাংশনটি পরীক্ষা করতে আমি যে পরীক্ষাগুলি ব্যবহার করেছি তা এখানে:
var d = new Date(2010,10,7);
var d2 = AddDays(d, 1);
document.write(d.toString() + "<br />" + d2.toString());
d = new Date(2010,10,8);
d2 = AddDays(d, -1)
document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());
d = new Date('Sun Mar 27 2011 01:59:00 GMT+0100 (CET)');
d2 = AddDays(d, 1)
document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());
d = new Date('Sun Mar 28 2011 01:59:00 GMT+0100 (CET)');
d2 = AddDays(d, -1)
document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());
সবচেয়ে সহজ উপায় হ'ল মিলিসেকেন্ডে রূপান্তর করা এবং 1000 * 60 * 60 * 24 মিলিসেকেন্ড যুক্ত করুন যেমন:
var tomorrow = new Date(today.getTime()+1000*60*60*24);
1000*60*60*24
xDaysToBeAdded
new Date(+new Date() + 1000*60*60*24)
তবে এটি আসলে getTime()
/ এর সাথে সত্যই মিল রয়েছে setTime()
।
new Date(Date.now()+1000*60*60*24);
অন্যান্য ব্যক্তির পরামর্শ অনুসরণ করার আগে আপনাকে প্রথমে আপনার স্ট্রিংটি পার্স করতে হবে:
var dateString = "2010-09-11";
var myDate = new Date(dateString);
//add a day to the date
myDate.setDate(myDate.getDate() + 1);
আপনি যদি আবার একই ফর্ম্যাটে ফিরে চান তবে আপনাকে এটি "ম্যানুয়ালি" করতে হবে:
var y = myDate.getFullYear(),
m = myDate.getMonth() + 1, // january is month 0 in javascript
d = myDate.getDate();
var pad = function(val) { var str = val.toString(); return (str.length < 2) ? "0" + str : str};
dateString = [y, pad(m), pad(d)].join("-");
তবে আমি অন্যান্য জবাবগুলিতে উল্লিখিত ডেট.জেএস পাওয়ার পরামর্শ দিচ্ছি, এটি আপনাকে অনেক সাহায্য করবে ।
আমি মনে করি কিছুই বেশী নিরাপদ .getTime()
এবং .setTime()
, তাই এই ভাল হওয়া উচিত, এবং সেইসাথে performant।
const d = new Date()
console.log(d.setTime(d.getTime() + 1000 * 60 * 60 * 24)) // MILLISECONDS
.setDate()
অবৈধ তারিখের জন্য (যেমন 31 + 1) খুব বিপজ্জনক এবং এটি ব্রাউজার বাস্তবায়নের উপর নির্ভর করে।
দুটি পদ্ধতি:
1:
var a = new Date()
// no_of_days is an integer value
var b = new Date(a.setTime(a.getTime() + no_of_days * 86400000)
2: আগের পদ্ধতির মতোই
var a = new Date()
// no_of_days is an integer value
var b = new Date(a.setDate(a.getDate() + no_of_days)
: DateObj.toJSON () মেথড সূত্র ব্যবহার তারিখের স্ট্রিং মান পান https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON স্লাইস ফিরে থেকে তারিখ আপনি চান দিন সংখ্যা দ্বারা মান এবং তারপরে বৃদ্ধি।
var currentdate = new Date();
currentdate.setDate(currentdate.getDate() + 1);
var tomorrow = currentdate.toJSON().slice(0,10);
Date.prototype.AddDays = function (days) {
days = parseInt(days, 10);
return new Date(this.valueOf() + 1000 * 60 * 60 * 24 * days);
}
উদাহরণ
var dt = new Date();
console.log(dt.AddDays(-30));
console.log(dt.AddDays(-10));
console.log(dt.AddDays(-1));
console.log(dt.AddDays(0));
console.log(dt.AddDays(1));
console.log(dt.AddDays(10));
console.log(dt.AddDays(30));
ফলাফল
2017-09-03T15:01:37.213Z
2017-09-23T15:01:37.213Z
2017-10-02T15:01:37.213Z
2017-10-03T15:01:37.213Z
2017-10-04T15:01:37.213Z
2017-10-13T15:01:37.213Z
2017-11-02T15:01:37.213Z
এটি কোনও BUG (পরীক্ষিত ফায়ারফক্স 32.0.3 এবং ক্রোম 38.0.2125.101) কিনা সম্পূর্ণরূপে নিশ্চিত নয় তবে নিম্নলিখিত কোডটি ব্রাজিল (-3 GMT) এ ব্যর্থ হবে:
Date.prototype.shiftDays = function(days){
days = parseInt(days, 10);
this.setDate(this.getDate() + days);
return this;
}
$date = new Date(2014, 9, 16,0,1,1);
$date.shiftDays(1);
console.log($date+"");
$date.shiftDays(1);
console.log($date+"");
$date.shiftDays(1);
console.log($date+"");
$date.shiftDays(1);
console.log($date+"");
ফলাফল:
Fri Oct 17 2014 00:01:01 GMT-0300
Sat Oct 18 2014 00:01:01 GMT-0300
Sat Oct 18 2014 23:01:01 GMT-0300
Sun Oct 19 2014 23:01:01 GMT-0200
তারিখে একটি ঘন্টা যুক্ত করা, এটি পুরোপুরি কার্যকর করবে (তবে সমস্যার সমাধান করে না)।
$date = new Date(2014, 9, 16,0,1,1);
ফলাফল:
Fri Oct 17 2014 01:01:01 GMT-0300
Sat Oct 18 2014 01:01:01 GMT-0300
Sun Oct 19 2014 01:01:01 GMT-0200
Mon Oct 20 2014 01:01:01 GMT-0200
আগামীকালের তারিখের স্ট্রিং উপস্থাপনায় ফলাফল। আজকের তারিখ পেতে নতুন তারিখ () ব্যবহার করুন, তারিখ.ডেটেট () এবং তারিখ.সেটেট () ব্যবহার করে একদিন যোগ করুন এবং তারিখের অবজেক্টটিকে স্ট্রিংয়ে রূপান্তর করুন।
const tomorrow = () => {
let t = new Date();
t.setDate(t.getDate() + 1);
return `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, '0')}-${String(
t.getDate()
).padStart(2, '0')}`;
};
tomorrow();
নেটিভ জেএসের মাধ্যমে, একদিন যোগ করতে আপনি নিম্নলিখিতগুলি করতে পারেন:
let date = new Date(); // today
date.setDate(date.getDate() + 1) // tomorrow
আর একটি বিকল্প moment
লাইব্রেরি ব্যবহার করা হয় :
const date = moment().add(14, "days").toDate()
জাভাস্ক্রিপ্টের তারিখগুলির জন্য টাইমজোন / দিবালোকের সঞ্চয় সচেতন তারিখ বৃদ্ধি:
function nextDay(date) {
const sign = v => (v < 0 ? -1 : +1);
const result = new Date(date.getTime());
result.setDate(result.getDate() + 1);
const offset = result.getTimezoneOffset();
return new Date(result.getTime() + sign(offset) * offset * 60 * 1000);
}