একটি তারিখে 10 সেকেন্ড যুক্ত করুন


253

আমি কীভাবে জাভাস্ক্রিপ্টের তারিখ অবজেক্টে 10 সেকেন্ড যুক্ত করতে পারি?

এটার মতো কিছু:

var timeObject = new Date()     
var seconds = timeObject.getSeconds() + 10;
timeObject = timeObject + seconds;

4
অথবা আপনি যদি এটি নির্মাণকারীর মাধ্যমে করতে চান - নতুন তারিখ (নতুন তারিখ ()। গেটটাইম () + 10000)
জন স্ট্রিকলার

উত্তর:


416

setSecondsপাশাপাশি একটি পদ্ধতি আছে :

var t = new Date();
t.setSeconds(t.getSeconds() + 10);

অন্যান্য Date ক্রিয়াকলাপের তালিকার জন্য আপনার MDN পরীক্ষা করা উচিত


setSeconds মোড়ানো-আশেপাশের মামলাগুলি সঠিকভাবে পরিচালনা করবে:

var d;
d = new Date('2014-01-01 10:11:55');
alert(d.getMinutes() + ':' + d.getSeconds()); //11:55
d.setSeconds(d.getSeconds() + 10);
alert(d.getMinutes() + ':0' + d.getSeconds()); //12:05


3
সাবধান, আমার নোডেজ ইনস্টলেশন d.getSecond () কে স্ট্রিং হিসাবে ফিরিয়ে দেয়। আমাকে এটিকে (+ d.getSeconds ()) এ পরিবর্তন করতে হয়েছিল ইউনারি প্লাস একটি স্ট্রিংকে একটি সংখ্যায় রূপান্তর করে। সম্ভবত আরও কিছুটা স্পষ্ট হবে 1 * d.getSeconds ()
tqWite

1
@ টকিওয়াইট, নোডে typeof new Date().getSeconds()ফিরে আসে 'number', তাই আমি মনে করি আপনার অন্যান্য সমস্যা থাকতে পারে (যদি আপনি নোড বা কোনও কিছুর পুরানো সংস্করণ না হন)।
zzzzBov

2
করার চেষ্টা করুন d.setSeconds(d.getSeconds() - 92);এবং আপনার 1'32 এর পরিবর্তে 2'32 "পার্থক্য" শেষ হবে। সমাধান new Date(d.getTime() - 92*1000);কাজ করে তবে!
রাফালন

1
অননুমোদিত আচরণের উপর নির্ভর করা (যে সেটসেকেন্ডস ()০) এক মিনিট বাড়িয়ে কয়েক মিনিট সেকেন্ড সেট করবে) এটি সাধারণত খারাপ অভ্যাসের মতো মনে হয়। (বর্তমানে পরবর্তী) উত্তরগুলি ডেট.জেটটাইম () + + যোগ করার জন্য মিলি সেকেন্ডের সংখ্যা> বলে মনে করা হচ্ছে এটি উদ্দেশ্য এবং সমর্থিত পদ্ধতির মত এবং এটি প্রতিটি ভাষার অনিবন্ধিত সূক্ষ্ম জ্ঞানের জ্ঞান ছাড়াই বিভিন্ন ভাষা থেকে আগত বেশিরভাগ প্রোগ্রামারদের কাছে স্পষ্ট হবে would নির্দিষ্ট জাভাস্ক্রিপ্ট ইঞ্জিন।
টম ডিবল

1
Issueতিহাসিক সময় অঞ্চলগুলির সাথে একটি সমস্যা দেখা দিতে পারে, @ রনের উত্তর নীচে মন্তব্যগুলি দেখুন: স্ট্যাকওভারফ্লো . com / a / 17267937 / 198797 । সম্ভবত কোনও সাধারণ দৃশ্য নয় তবে এটি একটি সমস্যা।
tsemer

110
// let timeObject = new Date();
// let seconds = 10 * 1000; // 10000 milliseconds
timeObject = new Date(timeObject.getTime() + seconds);

33
... এবং আপনি 10000 যুক্ত করার কারণ হ'ল জাভাস্ক্রিপ্ট তারিখগুলি মিলি সেকেন্ডে কাজ করে, যেমন 10000 = 10 * 1000
psiphi75

1
এবং + টাইমঅবজেক্টের আগে প্রয়োজন হয় কারণ এটি একটি সংখ্যায় টাইমঅবজেক্টকে কাস্ট করে। রন এর উত্তরে এটির মতো টাইমওজেক্ট.সেটটাইম ()
জেমস

1
জাভাস্ক্রিপ্ট তাই বাজে। এই প্রাথমিক এপিআইগুলি কিছুটা খারাপ হয়ে গেছে rew
usr ডিরেক্টরির

62

শুধু আমাদের মধ্যে পারফরম্যান্স পাগল জন্য।

সময় পেতে

var d = new Date('2014-01-01 10:11:55');
d = new Date(d.getTime() + 10000);

5,196,949 অপস / সেকেন্ড, দ্রুততম


setSeconds

var d = new Date('2014-01-01 10:11:55');
d.setSeconds(d.getSeconds() + 10);

2,936,604 অপস / সেকেন্ড, 43% ধীর


moment.js

var d = new moment('2014-01-01 10:11:55');
d = d.add(10, 'seconds');

22,549 অপস / সেকেন্ড, 100% ধীর


সুতরাং সম্ভবত এটি সর্বনিম্ন মানব পাঠযোগ্য (ততটা খারাপ নয়) তবে দ্রুতগতিতে যাওয়ার উপায় :)

jspref অনলাইন পরীক্ষা


3
বিশদগুলির জন্য ধন্যবাদ, খুব দরকারী :)
ডিন

58
const timeObject = new Date(); 
timeObject = new Date(timeObject.getTime() + 1000 * 10);
console.log(timeObject);

এছাড়াও দয়া করে উল্লেখ করুন: একটি জাভাস্ক্রিপ্ট তারিখ অবজেক্টে 30 মিনিট কীভাবে যুক্ত করবেন?


7
সমস্ত ভুল উত্তর এখানে, এটি সঠিক উত্তর।
Cory মাওয়াহারপোর্টার

হ্যাঁ, এটি সঠিক উত্তর। দুর্ভাগ্যক্রমে গুগল এই প্রশ্নের উল্লেখ করছে যদি "জাভাস্ক্রিপ্টের তারিখ যুক্ত সেকেন্ড" অনুসন্ধান করা হয় এবং সর্বাধিক ভোট দেওয়া উত্তরটি ভুল।
ফিলিপ গুচটার

2
কেউ দয়া করে ব্যাখ্যা করতে পারেন যে নির্বাচিত উত্তরটি (বর্তমানে @zzzzBov থেকে) ভুল করছে? এটা আমার জন্য কাজ করে.
tsemer

1
@ তাত্পর্যবিদ, প্রথম নজরে, আমি ভেবেছিলাম zzzzBov এর উত্তর সঠিক নয়, কারণ আমি ভাবিনি যে এটি যদি সীমা ছাড়িয়ে যায় তবে এটি মিনিটের মান আপডেট করবে। তবে আপনার "চ্যালেঞ্জিং" এর কারণে আমি এমডিএন পর্যালোচনা করেছি এবং নিশ্চিত করেছি যে উত্তরটি অবশ্যই সঠিক right :)
রন

1
@ টিস্যার একটি ওয়েব ব্রাউজারে orতিহাসিক সময় অঞ্চল সমর্থন সহ চেষ্টা করুন (উদাহরণস্বরূপ ইন্টারনেট এক্সপ্লোরার 11): এছাড়াও আপনার সিস্টেমের টাইমজোনকে "এশিয়া / ইয়েকাটারিনবুর্গ" তে সেট করুন:var timestamp = Date.parse("2011-03-26T20:59:59.999Z"); var d = new Date(timestamp); d.setSeconds(d.getSeconds() + 10); console.log(d.getTime() - timestamp);
4esn0k



4

আমার বেশ কয়েকটি নতুন রূপ রয়েছে

  1. var t = new Date(Date.now() + 10000);
  2. var t = new Date(+new Date() + 10000);

2

Date()জাভাস্ক্রিপ্ট বস্তুর সত্যিই যে স্মার্ট নয়।

আপনি যদি সেকেন্ড যুক্ত করার দিকে মনোনিবেশ করেন তবে মনে হয় এটি জিনিসগুলি সুচারুভাবে পরিচালনা করতে পারে তবে আপনি যদি X সংখ্যার সেকেন্ড যোগ করার চেষ্টা করেন তবে Dateআপনি একই সমস্যার সাথে শেষ মুহুর্তে মিনিট এবং ঘন্টা ইত্যাদি যোগ করুন । সুতরাং আমি কেবলমাত্র setSeconds()পদ্ধতিটি ব্যবহার করে এবং আমার ডেটাগুলিকে সেকেন্ডে রূপান্তর করতে ফিরে এসেছি (যা ভাল কাজ করেছে)।

যদি কেউ Date()সমস্ত সেট পদ্ধতি ব্যবহার করে কোনও গ্লোবাল অবজেক্টে সময় যোগ করতে এবং চূড়ান্ত সময়টি সঠিকভাবে প্রকাশ করতে পারে তবে আমি এটি দেখতে চাই তবে আমি বুঝতে পারি যে একটি নির্দিষ্ট পদ্ধতি একটি নির্দিষ্ট Date()সময়টিতে একটি সময়ে ব্যবহার করা হবে এবং তাদের মিশ্রণ একটি গোলযোগের দিকে নিয়ে যায়।

var vTime = new Date();

var iSecondsToAdd = ( iSeconds + (iMinutes * 60) + (iHours * 3600) + (iDays * 86400) );

vTime.setSeconds(iSecondsToAdd);

এখানে আরও কিছু ডকুমেন্টেশন যা সহায়তা করতে পারে :


2
  1. আপনি setSecondsআজ থেকে সেকেন্ড পেয়ে এবং এতে 10 সেকেন্ড যোগ করে পদ্ধতিটি ব্যবহার করতে পারেন

    var today = new Date();
    today.setSeconds(today.getSeconds() + 10);
  2. আপনি নতুন তারিখে 10 * 1000 মিলিসেকেন্ড যুক্ত করতে পারেন:

    var today = new Date(); 
    today = new Date(today.getTime() + 1000*10);
  3. আপনি ব্যবহার করতে পারেন setTime:

    today.setTime(now.getTime() + 10000)

1

এইভাবে চেষ্টা করুন।

Date.prototype.addSeconds = function(seconds) {
  var copiedDate = new Date(this.getTime());
  return new Date(copiedDate.getTime() + seconds * 1000);
}

শুধু কল করুন এবং বরাদ্দ করুন new Date().addSeconds(10)

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