জাভাস্ক্রিপ্ট - দুটি তারিখের মধ্যে মিনিট পান


156

আমার যদি দুটি তারিখ থাকে তবে আমি কীভাবে জাভাস্ক্রিপ্ট ব্যবহার করে মিনিটের মধ্যে দুটি তারিখের পার্থক্য পেতে পারি?


তারা কি তারিখ অবজেক্টস বা কেবল স্ট্রিং? দয়া করে একটি উদাহরণ
সিটিয়্যাটিন দিন

উত্তর:


204

আপনি এই কোডটি চেকআউট করতে পারেন:

var today = new Date();
var Christmas = new Date("2012-12-25");
var diffMs = (Christmas - today); // milliseconds between now & Christmas
var diffDays = Math.floor(diffMs / 86400000); // days
var diffHrs = Math.floor((diffMs % 86400000) / 3600000); // hours
var diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000); // minutes
alert(diffDays + " days, " + diffHrs + " hours, " + diffMins + " minutes until Christmas 2009 =)");

অথবা var diffMins = Math.floor((...আপনি যদি কয়েক মিনিট গোল করতে না চান তবে সেকেন্ড বাতিল করতে পারেন।


7
@ ফিল্ক, সে কারণেই আমি স্ট্যাকওভারফ্লোকে এত মূল্য দিই। অনেক বার্তা বোর্ডে, উত্তরটি কেবল একটি হাইপারলিঙ্ক। এখানে যদি এমন হয় তবে আমাদের কাছে এই দুর্দান্ত উত্তর হবে না।
অ্যান্ড্রু নীলি

5
এই উত্তরটি পরীক্ষার সময় আমি একটি ত্রুটি পেয়েছি: আপনি তারিখের অবজেক্টে মিনিটগুলি সেট করে রাখলে ডিফএইচআরএস ভুল হতে পারে। উদাহরণস্বরূপ, যদি ক্রিসমাস হয় "12-25-2015 03:55" এবং আজ "12-25-2015 02:00" হয় তবে ঘন্টাঘড়িটি দুই ঘন্টা। এক ঘন্টা হওয়া উচিত।
হফজ

29
Math.round(((diffMs % 86400000) % 3600000) / 60000);পার্থক্য 60 মিনিটের বেশি হলে কাজ করছে না
kuncevic.dev

3
পুনরায় উল্লেখ করে যে এটি কমপক্ষে কয়েক মিনিটের জন্য সঠিকভাবে কাজ করে না। উদাহরণস্বরূপ, এটি 62 মিনিটের একটি পার্থক্য নিয়েছে এবং রাউন্ডিংয়ের কারণে, এটি 2 মিনিটের ব্যবধান বলে ভেবেছিল।
জর্দান

6
এটি প্রশ্নের সঠিক উত্তর দেয় না, কেবলমাত্র কয়েক মিনিটের মধ্যে পার্থক্য গণনা করার পরিবর্তে, এই পার্থক্যটি দিন, ঘন্টা এবং মিনিটের সংমিশ্রণ হিসাবে গণনা করা হয় ... এইভাবে পার্থক্যটি যদি 1 দিন 1 ঘন্টা 1 মিনিট হয়, তবে এটি দেখায় 1 দিন 1 ঘন্টা 1 মিনিট, 1501 মিনিটের পরিবর্তে
অখিল গুপ্ত

170

2 তারিখের অবজেক্টগুলি বিয়োগ করা আপনাকে মিলিসেকেন্ডের মধ্যে পার্থক্য দেয়, যেমন:

var diff = Math.abs(new Date('2011/10/09 12:00') - new Date('2011/10/09 00:00'));

Math.absপরম পার্থক্যটি ব্যবহার করতে সক্ষম হতে ব্যবহৃত হয় (সুতরাং new Date('2011/10/09 00:00') - new Date('2011/10/09 12:00')একই ফলাফল দেয়)।

ফলাফলকে 1000 দ্বারা ভাগ করা আপনাকে সেকেন্ডের সংখ্যা দেয়। 60 দ্বারা ভাগ করা আপনাকে মিনিটের সংখ্যা দেয়। পুরো মিনিট পর্যন্ত গোল করতে, ব্যবহার করুন Math.floorবা Math.ceil:

var minutes = Math.floor((diff/1000)/60);

এই উদাহরণে ফলাফল 720 হবে


1
তীক্ষ্ন চিতকার। বা এর মতো কিছু আপনার (Math.floor(seconds/60))+':'+((seconds/60)%60)যদি বাকি সেকেন্ডগুলিরও প্রয়োজন হয়
KooiInc

4
আমি মনে করি এটিই উত্তম উত্তর, আমি লক্ষ্য করেছি যে গ্রহণযোগ্য উত্তরটি পার্থক্যটি মিনিটে রূপান্তর করতে ব্যর্থ হয় যখন পার্থক্যটি 60 মিনিটের বেশি হয়
সানী

এটিও ভুল। 12:00 00:00 এর মতো হতে পারে না, কারণ এগুলি 12 ঘন্টার পার্থক্য ...
দাভাতর

1
@ দাভাতর কে বলে যে তারা একই? তিনি কেবল বলেছেন যে 12 ঘন্টা - 0 ঘন্টা 0 ঘন্টা - 12 ঘন্টা হিসাবে একই।
মার্ক বাইজেন্স

পুরানো উত্তর, তবে আপনার কখনই new Date(string)কোনও ISO-8601 ফর্ম্যাট স্ট্রিং ছাড়া অন্য কোনও ফর্ম্যাট ব্যবহার করা উচিত নয় । দেখুন কেন ডেট.পার্স ভুল ফলাফল দেয়? , বা কেবল সংখ্যাগুলি ব্যবহার করুন (যেমন, new Date(2011, 9, 9, 12, 0, 0)মনে রাখবেন মাসগুলি 0 ভিত্তিক)।
হেরেটিক বানর

52
var startTime = new Date('2012/10/09 12:00'); 
var endTime = new Date('2013/10/09 12:00');
var difference = endTime.getTime() - startTime.getTime(); // This will give difference in milliseconds
var resultInMinutes = Math.round(difference / 60000);

2
এটি দুর্দান্ত এবং সহজ এবং আমার জন্য কাজ করেছে। আমি তারিখগুলি থেকে .getTime () সরিয়ে ফেললাম যদিও এটিকে দুটি তারিখের তুলনা করার মত ধারণাটি আমার কাছে আরও যুক্তিযুক্ত বলে মনে হয়েছিল। ধন্যবাদ।
Yos

পুরানো উত্তর, তবে আপনার কখনই new Date(string)কোনও ISO-8601 ফর্ম্যাট স্ট্রিং ছাড়া অন্য কোনও ফর্ম্যাট ব্যবহার করা উচিত নয় । দেখুন কেন ডেট.পার্স ভুল ফলাফল দেয়? , বা কেবল সংখ্যাগুলি ব্যবহার করুন (যেমন, new Date(2011, 9, 9, 12, 0, 0)মনে রাখবেন মাসগুলি 0 ভিত্তিক)।
হেরেটিক বানর

46

এই গণনা সম্পাদন করার জন্য একটি সাধারণ ফাংশন:

function getMinutesBetweenDates(startDate, endDate) {
    var diff = endDate.getTime() - startDate.getTime();
    return (diff / 60000);
}

24

এটি মিনিটের মধ্যে দুটি তারিখের মধ্যে পার্থক্য দেখানো উচিত। আপনার ব্রাউজারে এটি ব্যবহার করে দেখুন:

const currDate = new Date('Tue Feb 13 2018 13:04:58 GMT+0200 (EET)')
const oldDate  = new Date('Tue Feb 13 2018 12:00:58 GMT+0200 (EET)')


(currDate - oldDate) / 60000 // 64

4
টাইপস্ক্রিপ্ট আপনাকে ত্রুটি দেবে "গাণিতিক ক্রিয়াকলাপের বাম এবং ডানদিকে অবশ্যই 'কোনও', 'নম্বর' বা একটি এনুম টাইপ হওয়া উচিত"। ত্রুটিটি এড়ানোর জন্য(currDate.getTime() - oldDate.getTime()) / 60000
হোমার 21

12

যারা অল্প সংখ্যক নিয়ে কাজ করতে পছন্দ করেন তাদের পক্ষে

const today = new Date();
const endDate = new Date(startDate.setDate(startDate.getDate() + 7));
const days = parseInt((endDate - today) / (1000 * 60 * 60 * 24));
const hours = parseInt(Math.abs(endDate - today) / (1000 * 60 * 60) % 24);
const minutes = parseInt(Math.abs(endDate.getTime() - today.getTime()) / (1000 * 60) % 60);
const seconds = parseInt(Math.abs(endDate.getTime() - today.getTime()) / (1000) % 60); 

9

এই সমস্যাটি মুহুর্তের সাথে সহজেই সমাধান করা হয় j উদাহরণস্বরূপ:

var difference = mostDate.diff(minorDate, "minutes");

দ্বিতীয় প্যারামিটারটি অন্য পরামিতিগুলির জন্য পরিবর্তন করা যেতে পারে, moment.js ডকুমেন্টেশন দেখুন।

যেমন: "দিন", "ঘন্টা", "মিনিট" ইত্যাদি

http://momentjs.com/docs/

Moment.js এর জন্য সিডিএন এখানে উপলব্ধ:

https://cdnjs.com/libraries/moment.js

ধন্যবাদ।

সম্পাদনা করুন:

সর্বাধিক তারিখ এবং মাইনরডেট এক মুহুর্তের ধরণের হওয়া উচিত।


2

নোডে অনুরূপ কিছু সমাধান করার জন্য আমি এখানে কিছু মজাদার।

function formatTimeDiff(date1, date2) {
  return Array(3)
    .fill([3600, date1.getTime() - date2.getTime()])
    .map((v, i, a) => {
      a[i+1] = [a[i][0]/60, ((v[1] / (v[0] * 1000)) % 1) * (v[0] * 1000)];
      return `0${Math.floor(v[1] / (v[0] * 1000))}`.slice(-2);
    }).join(':');
}

const millis = 1000;
const utcEnd = new Date(1541424202 * millis);
const utcStart = new Date(1541389579 * millis);
const utcDiff = formatTimeDiff(utcEnd, utcStart);

console.log(`Dates:
  Start   : ${utcStart}
  Stop    : ${utcEnd}
  Elapsed : ${utcDiff}
  `);

/*
Outputs:

Dates:
  Start   : Mon Nov 05 2018 03:46:19 GMT+0000 (UTC)
  Stop    : Mon Nov 05 2018 13:23:22 GMT+0000 (UTC)
  Elapsed : 09:37:02
*/

আপনি এটিকে https://repl.it/@GioCirque/TimeSpan- ফর্ম্যাটিং এ দেখতে পাবেন


0

নিম্নলিখিত কোডটি আমার পক্ষে কাজ করেছে,

function timeDiffCalc(dateNow,dateFuture) {
    var newYear1 = new Date(dateNow);
    var newYear2 = new Date(dateFuture);

        var dif = (newYear2 - newYear1);
        var dif = Math.round((dif/1000)/60);
        console.log(dif);

}

0

আপনি নিম্নলিখিত হিসাবে করতে পারেন:

  1. পান difference of dates(পার্থক্যটি মিলি সেকেন্ডে হবে)
  2. রূপান্তর millisecondsমধ্যে minutesঅর্থাতms/1000/60

কোড:

let dateOne = new Date("2020-07-10");
let dateTwo = new Date("2020-07-11");

let msDifference =  dateTwo - dateOne;
let minutes = Math.floor(msDifference/1000/60);
console.log("Minutes between two dates =",minutes);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.