আমি কীভাবে বর্তমান তারিখে 1 দিন যুক্ত করতে পারি?


93

আমার একটি বর্তমান তারিখ অবজেক্ট রয়েছে যা জাভাস্ক্রিপ্ট তারিখ অবজেক্টটি ব্যবহার করে একদিন বাড়ানো দরকার। আমার কাছে নিম্নলিখিত কোড রয়েছে:

var ds = stringFormat("{day} {date} {month} {year}", { 
                day: companyname.i18n.translate("day", language)[date.getUTCDay()], 
                date: date.getUTCDate(), 
                month: companyname.i18n.translate("month", language)[date.getUTCMonth()], 
                year: date.getUTCFullYear() 
});

আমি কীভাবে এতে একদিন যুক্ত করতে পারি?

আমি এতে +1 যোগ করেছি getUTCDay()এবং getUTCDate()এটি 'রবিবার' প্রদর্শন করে না day, যা আমি প্রত্যাশা করি।


4
"যোগ +1" বলতে কী বোঝ? আপনার পরের দিন বা অন্য কিছু প্রয়োজন?
আলেকস জি

না date: (date.getUTCDate()+1)(আমার জন্য কাজ করে) কাজ করে না? এটি সম্ভব যে date(তারিখ হিসাবে) - অবজেক্ট এবং অবজেক্ট-কী হিসাবে নামকরণের বিরোধ রয়েছে you আপনি কি তারিখটিকে কল করতে চেষ্টা করেছেন () - ভিন্ন বস্তু?
ডোমিনিক শ্রায়বার

বর্তমানে এটি কেবল হিসাবে প্রদর্শিত হবে: <অপশন মান = "2012-04-06"> শনি 6 এপ্রিল 2012 </option> <বিকল্প মান = "2012-04-07"> 7 এপ্রিল 2012 </option>, কোনও "রবিবার" নেই 7 এপ্রিল 2012 "
ফ্রেঞ্চফ্যান্ট্রিক

সুতরাং এটি 7 Aprআপনার প্রয়োজন নয় (আমার সাথে 'পরের দিন কী যোগ করুন'), এটি Sunday+1উভয় day:এবং date:(বা, বর্তমান উত্তর হিসাবে পূর্বে উল্লিখিত হিসাবে) উভয় যোগ করতে মনে রাখবেন ।
ডোমিনিক শ্রাইবার

উত্তর:


238

একটি তারিখ অবজেক্টে এক দিন যুক্ত করতে:

var date = new Date();

// add a day
date.setDate(date.getDate() + 1);

সদৃশ প্রশ্নটি দেখুন: স্ট্যাকওভারফ্লো . com / প্রশ্নস / 676745453939৯/২ । এই উত্তরটি ভাল, তবে ডিএসটি হিসাবে অ্যাকাউন্ট করে না। বছরের 2 দিন থাকে যাতে 24 ঘন্টা থাকে না।
জেস

4
@ জেস — এটি নির্ভর করে আপনি কীভাবে ডিএসটি উপস্থাপনের মাধ্যমে পরিবর্তন চান। তারিখটিতে কীভাবে একটি যুক্ত করা হবে প্রশ্নটি জিজ্ঞাসা করেছিল, উপরের উত্তরটি ঠিক সেটাই করে। 24 ঘন্টা যুক্ত করা অগত্যা সেই তারিখটি বৃদ্ধি করে না, সেটেটেট ব্যবহার করে স্থানীয় তারিখে একটি যোগ করা সবসময়ই ঘটে।
রবজি

এখানে আমি যা বলতে চাইছি তা এখানে। 10 মার্চ বৃদ্ধি: var a = new Date("2013-03-10T00:00:00.000Z"); a.setDate(a.getDate() + 1); a.toISOString();হয় "2013-03-10T23:00:00.000Z"। এটি একটি সূক্ষ্ম কেস যেখানে উপরের ফাংশনটি আমার পক্ষে কাজ করে নি।
জেস

4
অবশ্যই না! আপনি কোনও ইউটিসি সময় দিয়ে শুরু করুন, তারপরে প্রয়োজনীয়ভাবে এটি স্থানীয় রূপান্তর করুন, একটি দিন যুক্ত করুন, তারপরে এটি ইউটিসিতে রূপান্তর করুন। সুতরাং একদিন স্থানীয় তারিখে যুক্ত করা হয়েছিল , তবে কেবলমাত্র 23 ঘন্টা ইউটিসি সময়। আপনি যদি ইউটিসি তারিখে 1 যোগ করেন, আপনি স্থানীয় সময় 01:00:00 ফিরে পাবেন। সেই আচরণটি দিবালোক সংরক্ষণের পক্ষে অনন্য নয়, এটি তিনটি পৃথক সময় অঞ্চল ব্যবহারের ফলাফল।
রবজি

8
আহা। আমি বুঝতে পারিনি যে getDate স্থানীয় সময়কে ইউটিসি থেকে রূপান্তর করছে। a.setUTCDate(a.getUTCDate() + 1);<- এটি জুলু তারিখগুলির সাথে কাজ করে।
জেস

40

আমার নম্র মতে সর্বোত্তম উপায় হ'ল কেবলমাত্র একটি পুরো দিনটি মিলি সেকেন্ডে যুক্ত করা, আপনি নিজের কোডটি কীভাবে নির্ধারণ করেন তার উপর নির্ভর করে যদি আপনি মাসের শেষ দিনটিতে থাকেন তবে এটি গণ্ডগোল করতে পারে।

উদাহরণস্বরূপ 28 ফেব্রুয়ারি বা 31 মার্চ।

আমি এটি কীভাবে করব তার উদাহরণ এখানে:

var current = new Date(); //'Mar 11 2015' current.getTime() = 1426060964567
var followingDay = new Date(current.getTime() + 86400000); // + 1 day in ms
followingDay.toLocaleDateString();

ইমো এটি নির্ভুলতার বীমা করে

এখানে অন্য উদাহরণ আমি দিচ্ছি না যে এটি আপনার পক্ষে কাজ করতে পারে তবে উপরে যে ডোজটি পরিষ্কার তা নয়

var today = new Date('12/31/2015');
var tomorrow = new Date(today);
tomorrow.setDate(today.getDate()+1);
tomorrow.toLocaleDateString();

imho এটি === 'পপ'

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

var dd = new Date(); // or any date and time you care about 
var dateArray =  dd.toISOString().split('T')[0].split('-').concat( dd.toISOString().split('T')[1].split(':') );
// ["2016", "07", "04", "00", "17", "58.849Z"] at Z 

মজাদার অংশের জন্য এখন!

var date = { 
    day: dateArray[2],
    month: dateArray[1],
    year: dateArray[0],
    hour: dateArray[3],
    minutes: dateArray[4],
    seconds:dateArray[5].split('.')[0],
    milliseconds: dateArray[5].split('.')[1].replace('Z','')
}

এখন আমাদের অফিশিয়াল বৈধ আন্তর্জাতিক তারিখ অবজেক্টটি জুলু মেরিডিয়ানে স্পষ্টভাবে লেখা আছে। এখন তারিখ পরিবর্তন করতে

  dd.setDate(dd.getDate()+1); // this gives you one full calendar date forward
  tomorrow.setDate(dd.getTime() + 86400000);// this gives your 24 hours into the future. do what you want with it.

সেকেন্ড / মিলিসেকেন্ড যুক্ত করা দিবালোকের সঞ্চয়ের জন্য কাজ করবে না।
ম্যাট এইচ

@ ম্যাট এইচ আপনি এই ধারণাটি কোথা থেকে পেয়েছেন। সময়টি ইউটিসিতে মিলি সেকেন্ডে সেট করা হবে 1970/01/01 থেকে
পিটার রাশিয়ান

4
এটি ইউটিসি সময়ে পরের দিন হবে, হ্যাঁ, তবে স্থানীয় সময় অগত্যা নয়। মার্কিন যুক্তরাষ্ট্রে স্প্রিং ফরোয়ার্ডে দিনে 25 ঘন্টা থাকে। সুতরাং আপনার যদি স্প্রিন্ট ফরোয়ার্ডের দিন 3/৩১/১৫ অবধি থাকে এবং 86400000 মিলি সেকেন্ড যুক্ত হয় তবে স্থানীয় সময়টি 3/31/15 হবে 23:00 ঘন্টা যেহেতু সেই দিনটিতে 25 ঘন্টা থাকে।
ম্যাট এইচ

4
আপনি এর প্রভাবটি দেখতে পাবেন:var dte = Date.parse('2015-11-01'); console.log(dte); dte.setTime(dte.getTime() + 86400000 ); console.log(dte);
ম্যাট এইচ

4
এটি ওভার ইঞ্জিনিয়ারড। আপনার যদি সমস্যা হয় তবে মুহুর্তের মতো লাইব্রেরি বা জিনিসগুলি আরও সহজ করার জন্য কিছু ব্যবহার করুন।
জোশুয়া মাইকেল ওয়াগনার


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

কোডপেন

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


একদিন মিলিসেকেন্ড যুক্ত করা ব্যর্থ হয় কারণ সমস্ত দিনগুলি সেই জায়গাগুলিতে 24 ঘন্টা দীর্ঘ হয় না যেগুলি দিবালোক সংরক্ষণ পালন করে। উদাহরণস্বরূপ, চিলি 14 মে 2017 এর শুরুতে মধ্যরাতে দিবালোকের সঞ্চয় শেষ করে Cl ঘড়িগুলি মধ্যরাত থেকে ২৩:০০ অবধি ফিরে যাবে। সুতরাং ২৪ ঘন্টা 2017-05-13 00:00:00 এ যুক্ত করে 2017-05-13 23:00:00 উত্পাদিত হবে, এবং তারিখটি বদলাবে না (কিছু ব্রাউজার ঠিক মধ্যরাতে এটি করবে, অন্যরা এক মিলিসেকেন্ড পরে) । :-(
রবজি

2

দ্বারা অনুপ্রাণিত jpmottin মধ্যে এই প্রশ্ন , এখানে এক লাইন কোড আছে:

var dateStr = '2019-01-01';
var days = 1;

var result = new Date(new Date(dateStr).setDate(new Date(dateStr).getDate() + days));

document.write('Date: ', result); // Wed Jan 02 2019 09:00:00 GMT+0900 (Japan Standard Time)
document.write('<br />');
document.write('Trimmed Date: ', result.toISOString().substr(0, 10)); // 2019-01-02

আশাকরি এটা সাহায্য করবে


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