জাভাস্ক্রিপ্ট তারিখে দিন যোগ করুন


1091

Dateজাভাস্ক্রিপ্ট ব্যবহার করে কীভাবে বর্তমান দিনগুলিতে যুক্ত করা যায় । । নেট এর মতো জাভাস্ক্রিপ্টের কোনও বিল্ট ইন ফাংশন রয়েছে AddDay?

উত্তর:


1206

আপনি এটি দিয়ে একটি তৈরি করতে পারেন: -

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));

এটি প্রয়োজনে স্বয়ংক্রিয়ভাবে মাসে বৃদ্ধি করার যত্ন নেয়। উদাহরণ স্বরূপ:

8/31 + 1 দিন 9/1 হয়ে যাবে ।

setDateসরাসরি ব্যবহারে সমস্যা হ'ল এটি একটি পরিবর্তনকারী এবং এই ধরণের জিনিসটি সর্বোত্তমভাবে এড়ানো যায়। ইসিএমএ Dateঅপরিবর্তনীয় কাঠামোর পরিবর্তে একটি পরিবর্তনীয় শ্রেণি হিসাবে বিবেচনা করতে উপযুক্ত বলে মনে করেছিল।


17
সরলীকৃত:Date.prototype.addDays=function(d){return new Date(this.valueOf()+864E5*d);};
ডানকান

27
@ ডানকান আপনি কি নিশ্চিত যে এটি উপরের মতোই? এটি কেবল 24 ঘন্টা যোগ করে তবে একটি দিন সর্বদা 24 ঘন্টা থাকে না । আমি অনুমান করি যে সময়টির অংশটি পরিবর্তন না করে কীভাবে তারিখের অংশটি 1 দিনের মধ্যে বাড়ানো যায়।
তামাস বলভারি

88
864E5কোনও কারণে আমি 24*60*60আমার কোডে লিখতে পছন্দ করি :)
মঙ্গল রবার্টসন

62
ছেলেরা, 864E5 যুক্ত করার পদ্ধতি ব্যবহার করবেন না কারণ এতে দিনের আলো সংরক্ষণের পার্থক্য লাগে না যেখানে দিনগুলি 23 বা 25 ঘন্টা হতে পারে।
sbrbot

12
আপনারা যারা দিবালোক সঞ্চয় সম্পর্কে উদ্বিগ্ন তাদের জন্য - করবেন না। এই অ্যালগরিদমগুলি তারিখটিকে কীভাবে ব্যাখ্যা করা হয় তা নয়, অন্তর্নিহিত তারিখটি পরিবর্তন করে। তারিখ প্রাপ্তি এবং সেটটারগুলিতে ডিএসটি বাস্তবায়িত হয় - গ্রীষ্মকালে গ্রাহকরা একটি ঘন্টা বিয়োগ করতে এবং সময়কে স্বাভাবিক করার জন্য সেটারটি গ্রীষ্মকালে সেই ঘন্টাটি যোগ করার জন্য। তবে কেবলমাত্র একটি নিখুঁত ঘন্টা ব্যবহার করার সময় - আপেক্ষিক ঘন্টাগুলি ব্যাখ্যা করার দরকার নেই। এই কারণেই তারিখ গণিত কাজ করে। আইএমএইচও ...
জেরার্ড ওনিল

754

সঠিক উত্তর :

function addDays(date, days) {
  var result = new Date(date);
  result.setDate(result.getDate() + days);
  return result;
}

ভুল উত্তর :

এই উত্তরটি মাঝে মাঝে সঠিক ফলাফল সরবরাহ করে তবে খুব প্রায়ই ভুল বছর এবং মাস প্রদান করে। এই উত্তরটি কার্যকর হওয়ার সময়টি যখন আপনি যে তারিখটি যোগ করার জন্য দিনটি যুক্ত করছেন তার বর্তমান বছরের এবং মাসটি ঘটে।

// Don't do it this way!
function addDaysWRONG(date, days) {
  var result = new Date();
  result.setDate(date.getDate() + days);
  return result;
}

প্রুফ / উদাহরণ

এই JsFizz দেখুন


@bzlm, হ্যাঁ মূলত একই। এটি কেবল তারিখের প্রোটোটাইপটি পরিবর্তন করে না। আমিও মূল উত্তরের ত্রুটিগুলি চিহ্নিত করতে চেয়েছিলাম।
স্পারবাইটস

গৃহীত উত্তরটি এর ত্রুটিগুলি দেখানোর জন্য পাক্ষিক আগে সম্পাদনা করা হয়েছিল। আপনি কি মনে করেন এটি আরও সম্পাদনা প্রয়োজন? যদি তাই হয়, কিভাবে?
bzlm

7
@bzlm: হ্যাঁ, আমি বিশ্বাস করি নোট পড়া উচিত "যদি 'থেকে' তারিখ না একই বছর হল এই পদ্ধতির ব্যর্থ অথবা মাস হিসাবে বর্তমান তারিখ "। আমি এখনও চিন্তিত যে ব্যবহারকারীরা উত্তরের দিকে নজর রাখবে এবং সতর্কতাটি পড়বে না যেহেতু এটি প্রকাশিত হয় না। ধন্যবাদ।
স্পারবাইটস

3
আমি মনে করি, এই কাজটি সঠিক না হলেও। তারিখের জন্য এমন কোনও নির্মাতা নেই : var ফলাফল = নতুন তারিখ (তারিখ); দেখুন, http://www.w3schools.com/js/js_dates.asp দেখুন । এমনকি যদি এটি সাধারণত কাজ করে তবে কখনও কখনও স্ট্রিং এবং তার বিপরীতে রূপান্তরিত হওয়ার কারণে ভুল ফলাফল হতে পারে। এটির বিভিন্ন ফলাফল
মার্সিন

2
অংকিতবালিয়ান, অন্যান্য উত্তর দেখুন।
ডাইটলাইট

188
var today = new Date();
var tomorrow = new Date();
tomorrow.setDate(today.getDate()+1);

সাবধান থাকুন, কারণ এটি কৌশলপূর্ণ হতে পারে be "আগামীকাল" সেট করার সময়, এটি কেবলমাত্র কাজ করে কারণ এটির বর্তমান মান "আজকের" জন্য বছর এবং মাসের সাথে মেলে। যাইহোক, "32" এর মতো একটি তারিখের নম্বরটি সেট করা পরবর্তী মাসে এটিকে সরানোর জন্য এখনও ঠিক কাজ করবে work


1
হ্যাঁ? তবে এ কী? (৩১ শে মার্চ, ২০১০ এ দৌড়ে): আজ = নতুন তারিখ (); আগামীকাল = নতুন তারিখ (); tomorrow.setDate (today.getDate () + 1 টি); সতর্কতা (tomorrow.getMonth ()); "3" বলে। সতর্কতা (আগামীকাল); সঠিক ... কেন ???
d -_- বি

12
@ সিমস মাস 0 সূচী হয়। মাস 3 এপ্রিল
জোয়েল কোহোর্ন

6
কেন 2 পৃথক তারিখ অবজেক্ট তৈরি করার প্রয়োজন? কেন নয় কেবল একই তারিখের বস্তুর ব্যবহার করুন: var d = new Date(); d.setDate( d.getDate() + 1 );?
জোসেফ সিলবার

8
এই পদ্ধতি বছরের পর বছর ধরে কাজ করে না। যদি আপনার শুরুর তারিখ কয়েক বছর আগে থেকে থাকে তবে সেই বছরের দিনটিgetDate() ফিরে আসে । তারপরে, কলিং বর্তমান বছরের দিন নির্ধারণ করে । সুতরাং এটি হল না একটি ভাল সাধারণ সমাধান। @ অ্যান্থনিডাব্লু জোনসের উত্তর আসলে সঠিকভাবে কাজ করে। setDate
ড্র নোকস

3
@ ড্র্রুনাকস - আপনার দাবি যে এটি বছরের পর বছর ধরে কাজ করে না তা ভুল। গেটডেট "বছরের বছরের" নয়, মাসে মাসে ফিরে আসে। উদাহরণস্বরূপ var d = new Date(2015,11,30);d.setDate(d.getDate() + 370)3 জানুয়ারী 2017 দেয় যা 2 বছর পেরিয়ে যায়।
রবজি

123

আমার সহজ সমাধানটি হ'ল:

nextday=new Date(oldDate.getFullYear(),oldDate.getMonth(),oldDate.getDate()+1);

দিবালোক সাশ্রয়ের সময় নিয়ে এই সমাধানে সমস্যা নেই। এছাড়াও, কেউ বছর, মাস, দিন ইত্যাদির জন্য যে কোনও অফসেট যুক্ত / উপস্থাপন করতে পারে

day=new Date(oldDate.getFullYear()-2,oldDate.getMonth()+22,oldDate.getDate()+61);

সঠিক কোড।


13
দ্রষ্টব্য: এটি সময়টি 00:00:00 এ রিসেট করে (কোনও সমস্যা হতে পারে বা নাও হতে পারে)
vlvaro González

আপনি যেমন বলেছিলেন তেমন কোনও মাসের শেষ দিনে কাজ করে না। বছরের 12 দিন এটিকে অযোগ্য করে তোলে। ডিবাগ করার মতো দুঃস্বপ্নের মতো শোনাচ্ছে !!!
ড্র নোকস

6
কোন ড্র, এটি বছরের সমস্ত দিন ব্যবহারযোগ্য is আপনি তারিখ অফসেটটি 31 বা মাসের অফসেটের 12 টিরও বেশি বড় করে রাখতে পারেন এবং এই ফাংশনটি এটি পরের মাসে বা মাসে বছরের হিসাবে পুনরায় গণনা করবে। সুতরাং উদাহরণস্বরূপ: পরের দিন = নতুন তারিখ (oldDate.getFullYear (), oldDate.getMonth (), oldDate.getDate () + 40); পুরোপুরি ভাল কোড।
sbrbot

getMonth () + 22 আছে - আপনি কী ভাবেন এটি কার্যকর হবে !?
sbrbot

1
আমি সম্মত, এইভাবে ব্যবহার করুন। দিবালোকের সময় সাশ্রয় করার কারণে আমরা কেবল একটি বাগ পেয়েছিলাম কারণ আমরা ব্যবহার করছিলাম setDate
জেলি

95

এই উত্তরগুলি আমার কাছে বিভ্রান্তিকর বলে মনে হচ্ছে, আমি পছন্দ করি:

var ms = new Date().getTime() + 86400000;
var tomorrow = new Date(ms);

গেটটাইম () আমাদের 1970 সাল থেকে মিলি সেকেন্ড দেয় এবং 86400000 এক দিনে মিলি সেকেন্ডের সংখ্যা। সুতরাং, এমএসে কাঙ্ক্ষিত তারিখের জন্য মিলিসেকেন্ড রয়েছে।

মিলিসেকেন্ড কনস্ট্রাক্টর ব্যবহার করে কাঙ্ক্ষিত তারিখের অবজেক্ট দেয়।


46
এই সমাধানটি দিবালোকের সঞ্চয়গুলি অ্যাকাউন্টে নেয় না। সুতরাং, উদাহরণস্বরূপ, এটি 23 ঘন্টা পরে একই তারিখে ফিরে আসবে: new Date(new Date('11/4/2012').getTime() + 86400000)
নোহ হ্যারিসন

6
@ নোহ মিলার আপনি যে সমস্যাটি সামনে এনেছেন তা কোনও বাগ নয়, এমন বৈশিষ্ট্য হতে পারে! ডিএসটি ভিত্তিক ফলাফল নির্ধারণের সময়টি জানার লক্ষ্য সহ প্রতিদিন 24 ঘন্টা যোগ করা সঠিক কাজ। আপনার উদাহরণটি যে তারিখটি প্রত্যাবর্তন করবে সেই তারিখটির 4 নভেম্বর রাত 11 টা সময় মূল্য রয়েছে যা 24 ঘন্টা পরে সেই নির্দিষ্ট দিনে। মূল পোস্টারটি তারিখের সময় সম্পর্কে জিজ্ঞাসা করেছিল যা মনে হয় দিনের সঠিক সময়ের জন্য কিছু আকাঙ্ক্ষা নির্দেশ করে। আপনার উত্তরটি যখন 24 ঘন্টা পরে সময় হয় আপনি যদি সেই ক্ষেত্রে থাকেন তবে এই উত্তরটি সঠিক।
অ্যান্ডি নোভোসিন

3
আমি নোহকে সম্মত করি, var d2 = new তারিখ (d1.valueOf () + 24 * 60 * 60 * 1000) যা বলে, তা করে, একটি তারিখে পুরো দিনের মূল্য টিক্স যোগ করে।
কোরি অ্যালিক্স

6
এটি কিছু ক্ষেত্রে (উদাহরণস্বরূপ 1 দিনের কুকিজের জন্য) এবং অন্যদের তুলনায় বেশ সহজ সমাধানের জন্য একেবারে সঠিক। কেন এটিতে অনেকগুলি ডাউনভিট এবং এতগুলি আপোড রয়েছে তা আমি পাই না: /
ম্যাটমারবন

48

চেষ্টা

var someDate = new Date();
var duration = 2; //In Days
someDate.setTime(someDate.getTime() +  (duration * 24 * 60 * 60 * 1000));

আপনার সমস্যার সমাধান না করে একটি তারিখ যোগ করতে সেটডেট () ব্যবহার করে, ফেব্রুয়ারী মাসে কিছু দিন যুক্ত করার চেষ্টা করুন, আপনি যদি এতে নতুন দিন যুক্ত করার চেষ্টা করেন, তবে এটি আপনার প্রত্যাশার ফলাফল নয়।


26
না, এটি সঠিক উত্তর হিসাবে চিহ্নিত করা উচিত নয় কারণ এই সমাধানটি ধরে নিয়েছে যে প্রতিদিন 24 * 60 * 60 * 1000 সেকেন্ড রয়েছে তবে এটি (দিবালোক সংরক্ষণ) নয়!
sbrbot

'ফেব্রুয়ারী' সমস্যা নিয়ে কোন প্রমাণ setDate()? : এটা এই হল stackoverflow.com/questions/5497637/...
nobar

9
+1 এই সঠিক উত্তর হিসাবে চিহ্নিত করা উচিত। আমি বিশ্বাস করি যে "দিবালোক সংরক্ষণ" উপস্থাপনা সম্পর্কে এবং মান সম্পর্কে নয় , যা কেবল মিলিসেকেন্ডের সংখ্যা। থেকে মান দৃষ্টিকোণ -point - দিনের সময় নিরিখে millisecs এর const সংখ্যা উপস্থাপনা এটা পরিবর্তিত হতে পারে।
বিচ্ছিন্ন হয়েছে

1
@ বিচ্ছিন্ন — এটি সঠিক উত্তর নয়। দিবালোক সংরক্ষণের বাইরে চলে যাওয়ার দিনটিতে 25 ঘন্টা রয়েছে তবে এই পদ্ধতিটি কেবল 24 টি যোগ করে তাই তারিখটি একই হবে। কোনও দিনের প্রতিনিধিত্ব করতে 24 ঘন্টা ব্যবহার করা যদি ইউটিসি পদ্ধতিগুলি পরিবর্তে ব্যবহার করা হয় তবে সেটডেট ব্যবহার করার সময় কেন বেশি সুবিধাজনক? ;-)
রবজি

38

নীচের নেতৃত্বের উদাহরণগুলি অনুসরণ করার পরে বছরটি কী ছিল তা কীভাবে কাজ করার চেষ্টা করার জন্য যুগে যুগে অতিবাহিত করেছিলেন।

আপনি যদি কেবলমাত্র তারিখটিতে কেবল n দিন যোগ করতে চান তবে আপনার কাছে সবেমাত্র যাওয়া ভাল:

myDate.setDate (myDate.getDate () + n);

বা দীর্ঘায়িত সংস্করণ

var theDate = new Date(2013, 11, 15);
var myNewDate = new Date(theDate);
myNewDate.setDate(myNewDate.getDate() + 30);
console.log(myNewDate);

এটি আজ / আগামীকাল স্টাফগুলি বিভ্রান্তিকর। আপনার নতুন তারিখের পরিবর্তনশীলটিতে বর্তমান তারিখটি সেট করে আপনি বছরের মানটি গণ্ডগোল করবেন। আপনি যদি আসল তারিখ থেকে কাজ করেন তবে আপনি পারবেন না।


7
যতক্ষণ আমি এই রত্নটিকে এখানে পাই না ততক্ষণ চারপাশে সমস্ত উত্তর পড়া। এখন তা বোঝা যায়। আশ্চর্যজনক যে আজ / আগামীকাল বিষয়টি প্রায় সমস্ত উত্তরে অনুলিপি করা হয়েছিল, যখন তা মোটেই বোঝা যায় না এবং এটি "পাঠযোগ্যতা এবং স্পষ্টতার জন্য নয়" যেমনটি লেখক সর্বাধিক উত্সাহিত উত্তর-সবচেয়ে উজ্জীবিত মন্তব্যে বলেছেন - এটি বিভ্রান্তিকর এবং একটি খারাপ অনুশীলন এবং ভুল
সিস্ক

23

আপনি যদি পারেন তবে moment.js ব্যবহার করুন । জাভাস্ক্রিপ্টের খুব ভাল নেটিভ তারিখ / সময় পদ্ধতি নেই। নীচে মুহুর্তের বাক্য গঠন উদাহরণ:

var nextWeek = moment().add(7, 'days');
alert(nextWeek);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js"></script>

তথ্যসূত্র: http://momentjs.com/docs/#/manipulating/add/


1
@ kpull1 প্রশ্নকর্তা কোনও বিল্ট-ইন সমাধান রয়েছে কিনা তা জিজ্ঞাসা করে সমাধান ডোমেনকে সীমাবদ্ধ করেননি।
ব্যবহারকারী 2910265

4
আধুনিক দ্রষ্টব্য: মোমেন্ট.জেএস এত ছোট উদ্দেশ্যে যুক্ত করতে অবিশ্বাস্যরকম ভারী। এটি বেশ কয়েক'শ কেবি, এবং ওয়েবপ্যাক-বান্ধব নয় isn't
জোশুয়া কমাউ

1
আমাদের পছন্দের লাইব্রেরিটি হ'ল তারিখ-এফএনএস। ওয়েবপ্যাক বান্ধব, দ্রুত এবং তারিখগুলি অপরিবর্তনীয় হিসাবে বিবেচনা করে।
ফ্রিওয়াকার

1
@ লুক উইলিয়ামস এখন পর্যন্ত কখনও ডেট-এফএনএস-এর কথা শুনেনি। এটি পরীক্ষা করে দেখুন ধন্যবাদ।
ব্যবহারকারী 2910265

2
@ জোশুয়াকমো যদি আপনি এটি সিডিএনজেএস.ক্লাউডফ্লেরে.com / ajax / libs / moment.js / 2.19.3 / moment.min.js থেকে ডাউনলোড করেন তবে এটি ডিস্কে 53,248 বাইট নেয়। আমি ভাবলাম এটি পুরো বল ও 'মোম, তবে আমি জানি না। যাই হোক না কেন, যাই হোক না কেন। এটি একটি বড় চুক্তি না.
বার্ডাস

22
int days = 1;
var newDate = new Date(Date.now() + days * 24*60*60*1000);

CodePen

var days = 2;
var newDate = new Date(Date.now() + days * 24*60*60*1000);

document.write('Today: <em>');
document.write(new Date());
document.write('</em><br/> New: <strong>');
document.write(newDate);


2
একটি মধ্যবর্তী তারিখের পরিবর্তনশীল না প্রয়োজন জন্য আপভোট।
জেফ লোরি

এটি সেরা উত্তর কারণ এটির কোনও রূপান্তর নেই
নোকট করুন

প্রতিদিন 24 ঘন্টা থাকে না, এটি ডিএসটি এবং লিপ সেকেন্ডের জন্য ব্যর্থ হয়।
স্টিফান

19

আমি গতরাতে এই এক্সটেনশনগুলি তৈরি করেছি:
আপনি ইতিবাচক বা নেতিবাচক মানগুলি পাস করতে পারেন;

উদাহরণ:

var someDate = new Date();
var expirationDate = someDate.addDays(10);
var previous = someDate.addDays(-5);


Date.prototype.addDays = function (num) {
    var value = this.valueOf();
    value += 86400000 * num;
    return new Date(value);
}

Date.prototype.addSeconds = function (num) {
    var value = this.valueOf();
    value += 1000 * num;
    return new Date(value);
}

Date.prototype.addMinutes = function (num) {
    var value = this.valueOf();
    value += 60000 * num;
    return new Date(value);
}

Date.prototype.addHours = function (num) {
    var value = this.valueOf();
    value += 3600000 * num;
    return new Date(value);
}

Date.prototype.addMonths = function (num) {
    var value = new Date(this.valueOf());

    var mo = this.getMonth();
    var yr = this.getYear();

    mo = (mo + num) % 12;
    if (0 > mo) {
        yr += (this.getMonth() + num - mo - 12) / 12;
        mo += 12;
    }
    else
        yr += ((this.getMonth() + num - mo) / 12);

    value.setMonth(mo);
    value.setYear(yr);
    return value;
}

7
.AddDays () পদ্ধতিটি ডেটলাইট সাশ্রয়ের সময়সীমা অতিক্রম করার তারিখগুলির জন্য কাজ করে না।
এমএসকিফিশার

1
এটি এখানে আরও ভাল উত্তরগুলির কারণ আপনি (সঠিকভাবে) তারিখ / সময় উপস্থাপনের জন্য মহাকাব্য থেকে মিলিস সংখ্যাটি ব্যবহার করেন এবং সামঞ্জস্যের জন্য মিলির পরিমাণ যোগ করেন ... তবে আপনি কেন এটি "অ্যাডমোথস" এর জন্য রাখেন নি! ? এবং কেন কোন যোগ বছর? তুমি কি বিরক্ত হয়ে গেছ?
রবিন

মাস ব্যতীত, সময়কাল স্থির সংখ্যা দ্বারা প্রতিনিধিত্ব করা যেতে পারে। তবে মাস চারটি ভিন্ন দৈর্ঘ্য হতে পারে। এছাড়াও, ডিএসটি থেকে দিন এবং উচ্চতর যে কোনও সময়কালের দৈর্ঘ্যের পরিবর্তনশীল দৈর্ঘ্য থাকতে পারে, সুতরাং আপনি আর কোনও স্তর জটিলতার ব্যতীত আর সময়-ভিত্তিক সংযোজন ব্যবহার করতে পারবেন না। আমি অ্যাডস যোগ করেছি (), এবং আমি অ্যাডমোথস () সংশোধন করেছি।
সুমেরে

14

দ্বিতীয় পরিবর্তনশীলটি ব্যবহার না করে, আপনি আপনার পরবর্তী x দিনের সাথে 7 প্রতিস্থাপন করতে পারেন:

let d=new Date(new Date().getTime() + (7 * 24 * 60 * 60 * 1000));

14

30 দিনের ব্যবহার বিস্তৃত করতে (24 ঘন্টা = 86400000 মিমি)

new Date(+yourDate - 30 *86400000)


যখন ক্যালকুলেট তারিখ সময় বের করার চেষ্টা সবসময় (কম্পিউটার বিজ্ঞান মধ্যে মিলিসেকেন্ড উপর ভিত্তি করে মনে রাখবেন যে তারিখ সময় en.wikipedia.org/wiki/System_time#Retrieving_system_time ) নতুন তারিখ (+ + yourDate + 30 * (24 * 60 *
আশরাফ আবুসাদা

13

সহজ সমাধান।

 Date.prototype.addDays = function(days) {
   this.setDate(this.getDate() + parseInt(days));
   return this;
 };

 // and then call

 var newDate = new Date().addDays(2); //+2 days
 console.log(newDate);

 // or

 var newDate1 = new Date().addDays(-2); //-2 days
 console.log(newDate1);


আমি মনে করি এটিই সেরা সমাধান। আমরা যদি তারিখ শ্রেণি প্রসারিত করি, তবে এটি আরও ভালভাবে বোঝায় যে তারিখের উদাহরণটি নিজেই আপডেট হয়েছে।
পোরলুন

10

আপনার জবাব প্রত্যাশার মতো কাজ করার জন্য ধন্যবাদ জেসন, এখানে আপনার কোড থেকে মিশ্রণ এবং অ্যান্টনিউবজোনসের হ্যান্ডি ফর্ম্যাটটি রয়েছে:

Date.prototype.addDays = function(days){
    var ms = new Date().getTime() + (86400000 * days);
    var added = new Date(ms);
    return added;
}

6
দিনে 86464০০০০ সেকেন্ডের কম বা বেশি হলে এটি দিবালোকের সংরক্ষণের বিষয়টি বিবেচনা করে না এবং আপনার কোডটিতে লজিক্যাল ত্রুটি (প্রোগ্রাম বাগ) হতে পারে।
sbrbot

কখনও কখনও এটি প্রয়োজন। ইবে এপিআই-এর এক্স-ডে নিলাম রয়েছে যা ২৪ ঘন্টা ভিত্তিক যা আপনার আইটেমটি ডিএসটি স্থিতির মধ্য-নিলামে পরিবর্তিত হয় তার চেয়ে আলাদা সময়ে শেষ হবে। সেক্ষেত্রে যৌক্তিক ত্রুটিগুলি এড়াতে আপনাকে এই জাতীয় ফাংশনটি ব্যবহার করতে হবে।
অ্যান্ডি নোভোকিন

10

পার্টিতে দেরীতে, তবে আপনি যদি ব্যবহার করেন jQueryতবে মোমেন্ট নামে একটি দুর্দান্ত প্লাগইন রয়েছে:

http://momentjs.com/

var myDateOfNowPlusThreeDays = moment().add(3, "days").toDate();

http://momentjs.com/docs/#/manipulating/

এবং সেখানে অন্যান্য অনেক ভাল জিনিস!

সম্পাদনা করুন: আইকিরুর মন্তব্যে ধন্যবাদ jQuery রেফারেন্স সরানো


1
মুহুর্তের jQuery এর দরকার নেই :)
আইকারু

সে ক্ষেত্রে আরও ভাল !!
রিমার্কলিমা

1
হ্যাঁ, প্লেইন ওল 'জেএস-এর সাথে দীর্ঘ সময় ধরে ফিউটিংয়ের পরে, আমি মোমেন্ট ব্যবহার করেছি এবং এটি কেবল (টিএম) কাজ করে!
কেসায়ামক্লি

আপনি যখন জেএসের কয়েকটি লাইন ব্যবহার করবেন তখন আপনি প্লাগইনটি কেন ব্যবহার করতে চান?
ফরাসি

@ ফ্রাঞ্চি কারণ, জেএসের কয়েকটি লাইন হিসাবে কী শুরু হয় এবং স্পষ্টতই আপনার অ্যাপ্লিকেশনটি দিন, তারিখ এবং সময় সম্পর্কিত তথ্যগুলিতে হেরফের করছে, শীঘ্রই এটি জেএসের কয়েকটি 1000 লাইন হবে, তারপরে আপনাকে অ্যাপটিকে স্থানীয়করণ করতে বলা হবে 12 টি ভাষা এবং সময় অঞ্চল এবং আপনি চান যে আপনি মুহুর্তের মতো কিছু শুরু করেছিলেন;)
রিমার্কলিমা

10

পাইপলাইন অপারেটরের জন্য তৈরি একটি সমাধান :

const addDays = days => date => {
  const result = new Date(date);

  result.setDate(result.getDate() + days);

  return result;
};

ব্যবহার:

// Without the pipeline operator...
addDays(7)(new Date());

// And with the pipeline operator...
new Date() |> addDays(7);

আপনার যদি আরও কার্যকারিতা প্রয়োজন হয় তবে আমি ডেট-এফএনএস লাইব্রেরিটি সন্ধান করার পরামর্শ দিচ্ছি ।


8

পুরানো আমি জানি, তবে কখনও কখনও আমি এটি পছন্দ করি:

function addDays(days) {
    return new Date(Date.now() + 864e5 * days);
}

2
এটি আমার কাছে সবচেয়ে বেশি অর্থবোধ করে। এটি সহজ, মার্জিত এবং কয়েক মাস / বছর ধরে চলমান বিষয়ে প্রার্থনা করে না doesn't
uadrive

1
সহজ উত্তর উপস্থাপন। এটির উপর ভিত্তি করে, প্রোটোটাইপ 'অ্যাডডেস' নিম্নলিখিত হবে:Date.prototype.addDays = function(days) {return new Date(this.getTime() + (864e5 * days));};
ক্রেজিআইভান 1974

প্রতিদিন 24 ঘন্টা থাকে না, এটি ডিএসটি এবং লিপ সেকেন্ডের জন্য ব্যর্থ হয়।
স্টিফান

8

আমি প্রস্তাবিত সমাধানের সাথে দিবালোক সঞ্চয় সময় নিয়ে সমস্যা ছিল।

getUTCDate/ setUTCDateপরিবর্তে ব্যবহার করে, আমি আমার সমস্যা সমাধান করেছি।

// Curried, so that I can create helper functions like `add1Day`
const addDays = num => date => {
  // Make a working copy so we don't mutate the supplied date.
  const d = new Date(date);

  d.setUTCDate(d.getUTCDate() + num);

  return d;
}

8

আপনি জাভাস্ক্রিপ্ট ব্যবহার করতে পারেন, jQuery প্রয়োজন নেই:

var someDate = new Date();
var numberOfDaysToAdd = 6;
someDate.setDate(someDate.getDate() + numberOfDaysToAdd); 
Formatting to dd/mm/yyyy :

var dd = someDate.getDate();
var mm = someDate.getMonth() + 1;
var y = someDate.getFullYear();

var someFormattedDate = dd + '/'+ mm + '/'+ y;

8

জেনেরিক প্রোটোটাইপ বিনা ভেরিয়েবল সহ, এটি একটি বিদ্যমান তারিখের মানের জন্য প্রয়োগ হয়:

Date.prototype.addDays = function (days) {
    return new Date(this.valueOf() + days * 864e5);
}

7

সেটডেট () এর জন্য মোজিলা ডক্সটি নির্দেশ করে না যে এটি মাসের দৃশ্যের শেষ পরিচালনা করবে। দেখাHttps://developer.mozilla.org/en-US/docs/ স্ক্রিপ্ট / গ্লোবাল_অবজেক্টস / তারিখ

তারিখ ঠিক করা()

  • স্থানীয় সময় অনুসারে নির্দিষ্ট তারিখের জন্য মাসের দিন (১-২১১) সেট করে।

এজন্য যখন আমাকে দিন যুক্ত করার দরকার হয় তখন আমি সেটটাইম () ব্যবহার করি।


আমি ECMAScript ডক্সের সাথে লিঙ্ক করব, তবে সেগুলি পিডিএফ-এ প্রকাশিত হয়েছে;
ব্লেক মিলস

1
পুনরায় " সেটডেটের জন্য মোজিলা ডক্স () ইঙ্গিত দেয় না যে এটি মাসের দৃশ্যের শেষ পরিচালনা করবে "। "ডক্স" আপডেট করা হয়েছে তাই এখন তারা করে। ;-)
রবজি

7

এই হিসাবে সহজ:

new Date((new Date()).getTime() + (60*60*24*1000));

2
এটি ইউটিসির দিনগুলি যুক্ত করার সময়, এটি স্থানীয় পদ্ধতিগুলি ব্যবহার করে এবং ২৪ ঘন্টা দীর্ঘ নয় এমন স্থানীয় দিনগুলিতে অনুমতি দেয় না যা টাইমজোন অফসেট পরিবর্তিত হলে ঘটে (উদাহরণস্বরূপ দিবালোক সংরক্ষণের বাইরে))
রবজি

6

আমার ধারণা আমিও একটি উত্তর দেব:
ব্যক্তিগতভাবে, আমি কৃত্রিম পরিবর্তনশীল ঘোষণা, পদ্ধতি কল এবং কনস্ট্রাক্টর কলগুলি এড়ানোর চেষ্টা করতে চাই, কারণ এগুলি সমস্ত পারফরম্যান্সে ব্যয়বহুল। (কারণগুলির মধ্যে অবশ্যই)
আমি এটিকে @ অ্যান্থনিডাব্লু জোন্স দ্বারা প্রদত্ত উত্তরের নীচে কেবল মন্তব্য হিসাবে রেখে যেতে যাচ্ছিলাম তবে এটিকে আরও ভাল করে ভাবেন।

// Prototype usage...
Date.prototype.addDays = Date.prototype.addDays || function( days ) {
    return this.setTime( 864E5 * days + this.valueOf() ) && this;
};

// Namespace usage...
namespace.addDaysToDate = function( date, days ) {
    return date.setTime( 864E5 * days + date.valueOf() ) && date;
};

// Basic Function declaration...
function addDaysToDate( date, days ) {
    return date.setTime( 864E5 * days + date.valueOf() ) && date;
};

উপরের ডিএসটি সম্মান করবে। মানে আপনি যদি ডিএসটি অতিক্রম করে এমন বেশ কয়েকটি দিন যোগ করেন তবে প্রদর্শিত সময় (ঘন্টা) তা প্রতিফলিত করতে পরিবর্তিত হবে।
উদাহরণ:
নভেম্বর 2, 2014 02:00 ছিল ডিএসটি-র সমাপ্তি।

var dt = new Date( 2014, 10, 1, 10, 30, 0 );
console.log( dt );                  // Sat Nov 01 2014 10:30:00
console.log( dt.addDays( 10 ) );    // Tue Nov 11 2014 09:30:00

আপনি যদি ডিএসটি জুড়ে সময় ধরে রাখতে চান (তাই 10:30 এখনও 10:30 হবে) ...

// Prototype usage...
Date.prototype.addDays = Date.prototype.addDays || function( days ) {
    return this.setDate( this.getDate() + days ) && this;
};

// Namespace usage...
namespace.addDaysToDate = function( date, days ) {
    return date.setDate( date.getDate() + days ) && date;
};

// Basic Function declaration...
function addDaysToDate( date, days ) {
    return date.setDate( date.getDate() + days ) && date;
};

সুতরাং, এখন আপনি ...

var dt = new Date( 2014, 10, 1, 10, 30, 0 );
console.log( dt );                  // Sat Nov 01 2014 10:30:00
console.log( dt.addDays( 10 ) );    // Tue Nov 11 2014 10:30:00

6

না, জাভাস্ক্রিপ্টের কোনও ফাংশন বিল্ট ইন নেই, তবে আপনি কোডের একটি সাধারণ লাইন ব্যবহার করতে পারেন

timeObject.setDate(timeObject.getDate() + countOfDays);

5

আমি এরকম কিছু ব্যবহার করি:

new Date(dateObject.getTime() + amountOfDays * 24 * 60 * 60 * 1000)

দিন সাশ্রয়ের সময় নিয়ে কাজ করে:

new Date(new Date(2014, 2, 29, 20, 0, 0).getTime() + 1 * 24 * 60 * 60 * 1000)

নতুন বছর নিয়ে কাজ করে:

new Date(new Date(2014, 11, 31, 20, 0, 0).getTime() + 1 * 24 * 60 * 60 * 1000)

এটি প্যারামাইট্রাইজ করা যেতে পারে:

function DateAdd(source, amount, step) {
  var factor = 1;
  if (step == "day") factor = 24 * 60 * 60 * 1000;
  else if (step == "hour") factor = 60 * 60 * 1000;
  ...
  new Date(source.getTime() + amount * factor);
}

4

আমি নিম্নলিখিত সমাধানটি ব্যবহার করছি।

var msInDay = 86400000;
var daysToAdd = 5;
var now = new Date();
var milliseconds = now.getTime();
var newMillisecods = milliseconds + msInDay * daysToAdd;
var newDate = new Date(newMillisecods);
//or now.setTime(newMillisecods);

তারিখের এমন একটি নির্মাতা রয়েছে যা কোনও আন্ত গ্রহণ করে। এই যুক্তিটি জানুয়ারি 1, 1970 এর আগে / পরে মোট মিলি সেকেন্ডের প্রতিনিধিত্ব করে It এটির একটি পদ্ধতি সেটটাইমও রয়েছে যা একটি নতুন তারিখ অবজেক্ট তৈরি না করে একই কাজ করে।

আমরা এখানে যা করি তা হ'ল দিনগুলি মিলি সেকেন্ডে রূপান্তরিত হয় এবং এই মানটি গেটটাইম দ্বারা সরবরাহিত মানের সাথে যুক্ত হয়। শেষ অবধি, আমরা ফলাফল তারিখ (মিলিসেকেন্ডস) কনস্ট্রাক্টর বা সেটটাইম (মিলিসেকেন্ড) পদ্ধতিতে দেব।


প্রতিদিন 24 ঘন্টা থাকে না, এটি ডিএসটি এবং লিপ সেকেন্ডের জন্য ব্যর্থ হয়।
স্টিফান

স্টিফান, এর জন্য অন্য কোনও গ্রন্থাগার কি অ্যাকাউন্ট করে?
ভখতং

now.setDate(now.getDate() + days);স্বয়ংক্রিয়ভাবে ডিএসটি পরিবর্তনগুলি পরিচালনা করে। এবং আমাকে সংশোধন করতে হবে, জেএস টাইমস্ট্যাম্পগুলিতে লিপ সেকেন্ড উপেক্ষা করা হবে।
স্টিফান

4

সম্পাদনা করুন:setTime() (বা setHours()) এর পরিবর্তে আপনি এটি এভাবে করতে পারেন:

Date.prototype.addDays= function(d){
  this.setDate(this.getDate() + d);
  return this;
};

var tomorrow = new Date().addDays(1);

পুরানো:

পরিবর্তে setTime()আপনি ব্যবহার করতে পারেন setHours():

Date.prototype.addDays= function(d){
    this.setHours(this.getHours() + d * 24);
    return this;
};

var tomorrow = new Date().addDays(1);

জেএসফিডাল দেখুন ...


এই যুক্তি অনুসরণ করে d.setDate(d.getDate() + 1);
আপনিও


4

একটি সেটডেট এবং একটি গেটডেট পদ্ধতি রয়েছে যা আপনাকে এরকম কিছু করার অনুমতি দেয়:

var newDate = aDate.setDate(aDate.getDate() + numberOfDays);

যদি আপনি উভয়ই বেশ কয়েকটি দিন বিয়োগ করতে চান এবং আপনার তারিখটিকে মানব পাঠযোগ্য বিন্যাসে ফর্ম্যাট করতে চান তবে আপনার এমন একটি কাস্টম DateHelperঅবজেক্ট তৈরির বিষয়টি বিবেচনা করা উচিত :

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. Add 20 days
// 3. Format it
// 4. Output it
// ---------------------------------------------------------------------
document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), 20));

( এই ফিডলটিও দেখুন )


4

জাভাস্ক্রিপ্টে প্রোটোটাইপ প্রসারিত করা ভাল ধারণা নয় , বিশেষত পেশাদার কোডবেসে in

আপনি যা করতে চান তা হ'ল নেটিভ Dateক্লাসটি বাড়ানো :

class MyCustomDate extends Date {

  addDays(days) {
    const date = new MyCustomDate(this.valueOf());
    date.setDate(date.getDate() + days);
    return date;
  }
  
}

const today = new MyCustomDate();

const nextWeek = today.addDays(7)

console.log(nextWeek)

এইভাবে, যদি একদিন জাভাস্ক্রিপ্ট কোনও স্থানীয় addDaysপদ্ধতি প্রয়োগ করে তবে আপনি কোনও কিছু ভাঙ্গবেন না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.