মুহূর্ত জেএস - কোন তারিখ আজ বা ভবিষ্যতে কিনা তা পরীক্ষা করে দেখুন


222

আমি momentjsপ্রদত্ত তারিখটি আজ বা ভবিষ্যতে কিনা তা পরীক্ষা করে দেখার চেষ্টা করছি ।

আমার এ পর্যন্ত যা আছে:

<script type="text/javascript" src="http://momentjs.com/downloads/moment.min.js"></script>
<script type="text/javascript">

var SpecialToDate = '31/01/2014'; // DD/MM/YYYY

var SpecialTo = moment(SpecialToDate, "DD/MM/YYYY");
if (moment().diff(SpecialTo) > 0) {
    alert('date is today or in future');
} else {
    alert('date is in the past');
}

</script>

কোডটি আমার তারিখটি (জানুয়ারী ২০১৪ এর 31 শে) অতীতের তারিখ হিসাবে মূল্যায়ন করছে।

আমি কি ভুল করছি কোন ধারণা?

উত্তর:


197

ডকুমেন্টেশন পড়ার পরে: http://momentjs.com/docs/#/displaying/differences/ , আপনাকে diffফাংশনটি বিয়োগ অপারেটরের মতো বিবেচনা করতে হবে।

                   // today < future (31/01/2014)
today.diff(future) // today - future < 0
future.diff(today) // future - today > 0

অতএব, আপনাকে নিজের অবস্থার বিপরীত করতে হবে।

আপনি যদি সব ঠিক আছে কিনা তা পরীক্ষা করতে চান তবে আপনি ফাংশনে একটি অতিরিক্ত প্যারামিটার যুক্ত করতে পারেন:

moment().diff(SpecialTo, 'days') // -8 (days)

75
এটি কোনও ভিন্ন দিন হলে কাজ করবে না তবে পার্থক্যটি 24 ঘণ্টারও কম
গ্লাকি

1
সময়ের পার্থক্য 24 ঘন্টা কম থাকলে নির্বিশেষে কাজ করা।
জান্ডারওয়ার

3
আমার জন্য কাজ করছে না। যদি ভবিষ্যতের মুহুর্তে দিনটি +1 হয় ()
আলাদা হয়

2
আজকের অর্থ আগামী 24 ঘন্টার মধ্যে নয়। isSame ভাল সমাধান।
ক্যাস্পার জিমিয়ানেক

1
moment().diff(SpecialToDate)সরাসরি মিলি সেকেন্ডে পার্থক্য দেবে। 'days'প্রয়োজন হয় না। এটি সমস্ত পরিস্থিতিতে কাজ করবে। স্পেশালটোডেট '2018-10-26 00:00:00'উদাহরণের জন্য হতে পারে ।
ব্যাকস্ল্যাশএন

312

আপনি isSameফাংশনটি ব্যবহার করতে পারেন :

var iscurrentDate = startTime.isSame(new Date(), "day");
if(iscurrentDate) {

}

এই ম্যাচটি বছরের বছর এবং মাসও কি?
সুপারউবারডুপার

13
এটি অবশ্যই বছর এবং মাসের সাথে মিলবে। মুহূর্ত ('০০-০১-০১ ') isসেম (' ২০১১-০১-০১ ',' মাস '); // মিথ্যা, বিভিন্ন বছরের মুহুর্ত ('2010-01-01') Sসাম ('2010-02-01', 'দিন'); // ভুয়া, আলাদা মাস
গ্রে ভল্ফ

6
এটি এমনকি ওপি-র প্রশ্নের উত্তর দেয় না ... "আজ বা ভবিষ্যতে", এবং কী startTime? তারিখ অবজেক্টের কোনও isSameপদ্ধতি নেই ...
শারকাক্স

1
@ শারকাক্স এই প্রশ্নটি মুহুর্তের সম্পর্কে, সুতরাং স্পষ্টভাবে এটি একটি মুহূর্তের অবজেক্ট।
নাথান

157
// Returns true if it is today or false if it's not
moment(SpecialToDate).isSame(moment(), 'day');

85

যেহেতু কেউ এখনও এটি উল্লেখ করেছে বলে মনে হয় না, কোনও মুহুর্তের তারিখের বস্তু অতীতে রয়েছে কিনা তা যাচাই করার সহজ উপায়:

momentObj.isBefore()

বা ভবিষ্যতে:

momentObj.isAfter()

খালি আরোগুলি ফাঁকা রেখে দিন - এটি এখনই ডিফল্ট হবে।

এছাড়াও আছে isSameOrAfterএবং isSameOrBefore

সময়ে এই বিষয়গুলি এনবি। আপনি যদি কেবলমাত্র দিনের যত্ন করে থাকেন তবে দীপেন্দুর উত্তর দেখুন


1
দস্তাবেজগুলি ব্যাখ্যা করে যে এটি অনির্ধারিত আচরণ, সুতরাং আপনার এটি করা উচিত নয়: momentjs.com/docs/#/query/is- পূর্ববর্তী
ড্যানক্রাম্ব

13
@ ড্যানক্রম্ব এটি আবার পড়ুন। "যদি # মুহুর্তে কোনও কিছু পাস না করা হয়, তবে এটি বর্তমান সময়ের ডিফল্ট হবে" " momentObjআমার উদাহরণে একটি মুহূর্ত তারিখ একটি দৃষ্টান্ত নেই। দস্তাবেজগুলি একটি বিবৃতিতে বিশেষত একটি নতুন উদাহরণ তৈরি করার (বর্তমান সময়) কথা বলছে এবং তারপরে এটি অতীতে রয়েছে কিনা তা খতিয়ে দেখছে। আমি আপনাকে এমনটি করার প্রস্তাব দিচ্ছি নাmoment().isBefore() যা একেবারে অর্থহীন - আপনি যদি এখন অতীতে (বা ভবিষ্যতে) থাকেন তবে কেন পরীক্ষা করবেন ?
এমপিএন

83

আপনি isAfter()momentjs এর ক্যোয়ারী ফাংশন ব্যবহার করতে পারেন :

একটি মুহূর্ত অন্য মুহুর্তের পরে আছে কিনা তা পরীক্ষা করে দেখুন।

moment('2010-10-20').isAfter('2010-10-19'); // true

আপনি যদি গ্রানুলারিটিটি মিলিসেকেন্ড ব্যতীত অন্য ইউনিটে সীমাবদ্ধ করতে চান তবে ইউনিটগুলিকে দ্বিতীয় প্যারামিটার হিসাবে পাস করুন।

moment('2010-10-20').isAfter('2010-01-01', 'year'); // false

moment('2010-10-20').isAfter('2009-12-31', 'year'); // true

http://momentjs.com/docs/#/query/is-after/


তারিখের স্ট্রিং নেয় এমন কনস্ট্রাক্টর অবনতিযুক্ত।
ওয়াহিদ আমিরি

@VahidAmiri দ্য ডক্স এই উল্লেখ না। তবে তারা পরামর্শ দেয় আমরা আইএসও 8601 না ব্যবহার করে আমরা স্ট্রিং + ফর্ম্যাট কনস্ট্রাক্টর ব্যবহার করি । সুতরাং যদি না কেউ কিছু অদ্ভুত তারিখের ফর্ম্যাট ব্যবহার করে তবে এটি কেবল একটি স্ট্রিং ব্যবহার করা ঠিক।
jhndodo

15

কোনও মুহূর্ত আজকের মতো বা ভবিষ্যতে এর মতো কিনা তা পরীক্ষা করার জন্য মুহুর্তের পূর্বে পদ্ধতিটি उलट করুন:

!moment(yourDate).isBefore(moment(), "day");

10

অন্য কারও যদি এটির প্রয়োজন হয় তবে কেবল এটি করুন:

const isToday = moment(0, "HH").diff(date, "days") == 0;

বা যদি আপনি কোনও ফাংশন চান:

isToday = date => moment(0,"HH").diff(date, "days") == 0;

যেখানে তারিখ আপনি যাচাই করতে চান সেই তারিখ।

ব্যাখ্যা

moment(0, "HH") আজকের দিনটি মধ্যরাতে ফিরে আসে।

date1.diff(date2, "days") তারিখ 1 এবং তারিখ 2 এর মধ্যে দিনের সংখ্যা প্রদান করে।

হালনাগাদ

আমি তখন থেকে আইসেম ফাংশনটি খুঁজে পেয়েছি , যা বিশ্বাস করি যে কোনও তারিখ যদি আজ থাকে তবে তা নির্ধারণের জন্য ব্যবহার করা সঠিক ফাংশন:

moment().isSame('2010-02-01', 'day'); // Return true if we are the 2010-02-01

8

এটি আজ কিনা তা যাচাই করতে :

যদি আমরা দু'টি তারিখের সাথে তুলনা করি যা সময় ধারণ করে isSameতবে অবশ্যই তথ্য ব্যর্থ হয়। diffনতুন তারিখের জন্য দুটি তারিখ বিস্তৃত হলে ব্যর্থ হবে:

var date1 = moment("01.01.2016 23:59:00", "DD.MM.YYYY HH.mm.ss");
var date2 = moment("02.01.2016 00:01:00", "DD.MM.YYYY HH.mm.ss");
var diff = date2.diff(date1); // 2seconds

আমি দ্রুত এবং সংক্ষিপ্ত না হলেও সর্বোত্তম উপায়টি নিম্নলিখিত বলে মনে করি:

var isSame = date1.date() == date2.date() && date1.month() == date2.month() && date1.year() == date2.year()

এটি ভবিষ্যতে কিনা তা পরীক্ষা করে দেখুন :

যেমন অন্যান্য ব্যবহারকারীদের দ্বারাও পরামর্শ দেওয়া হয়েছে, diffপদ্ধতিটি কাজ করে।

var isFuture = now.diff(anotherDate) < 0 

7

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

var SpecialToDate = '31/01/2014'; // DD/MM/YYYY

var SpecialTo = moment(SpecialToDate, "DD/MM/YYYY");
if (moment() > SpecialTo) {
    alert('date is today or in future');
} else {
    alert('date is in the past');
}

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


4

ফার্স্টডেট যদি একই হয় বা (ভবিষ্যতের) পরে দ্বিতীয় তারিখ সত্য হয় অন্যথায় মিথ্যা ফিরে আসে। টোডা ফার্স্টডেট = নতুন তারিখ ();

  static isFirstDateSameOrAfterSecondDate(firstDate: Date, secondDate: Date): boolean {
    var date1 = moment(firstDate);
    var date2 = moment(secondDate);
    if(date1 && date2){
      return date1.isSameOrBefore(date2,'day');
    }
    return false;
  }

দিনের তুলনা মুহুর্তের উদাহরণ রয়েছে;

  static isFirstDateSameSecondDate(firstDate: Date, secondDate: Date): boolean {
    var date1 = moment(firstDate);
    var date2 = moment(secondDate);
    if (date1 && date2) {
      return date1.isSame(date2,'day');
    }
    return false;
  }

  static isFirstDateAfterSecondDate(firstDate: Date, secondDate: Date): boolean {
    var date1 = moment(firstDate);
    var date2 = moment(secondDate);
    if(date1 && date2){
      return date1.isAfter(date2,'day');
    }
    return false;
  }

  static isFirstDateBeforeSecondDate(firstDate: Date, secondDate: Date): boolean {
    var date1 = moment(firstDate);
    var date2 = moment(secondDate);
    if(date1 && date2){
      return date1.isBefore(date2,'day');
    }
    return false;
  }

3

ভবিষ্যতের তারিখের জন্য চেক করতে সহজতমটি ব্যবহার করুন

if(moment().diff(yourDate) >=  0)
     alert ("Past or current date");
else
     alert("It is a future date");

2
function isTodayOrFuture(date){
  date = stripTime(date);
  return date.diff(stripTime(moment.now())) >= 0;
}

function stripTime(date){
  date = moment(date);
  date.hours(0);
  date.minutes(0);
  date.seconds(0);
  date.milliseconds(0);
  return date;
}

এবং তারপরে এটি কেবল এটিকে ব্যবহার করুন:

isTodayOrFuture(YOUR_TEST_DATE_HERE)

1

গত দিনগুলি পরীক্ষা করতে গতকাল নির্বাচন করুন বা সহায়তার সাহায্যে নয় moment().subtract(1, "day");

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

function myFunction() {
  var yesterday = moment().subtract(1, "day").format("YYYY-MM-DD");
  var SpecialToDate = document.getElementById("theDate").value;

  if (moment(SpecialToDate, "YYYY-MM-DD", true).isAfter(yesterday)) {
    alert("date is today or in future");
    console.log("date is today or in future");
  } else {
    alert("date is in the past");
    console.log("date is in the past");
  }
}
<script src="http://momentjs.com/downloads/moment.js"></script>
<input type="date" id="theDate" onchange="myFunction()">


1

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

যেমনটি করার সময় আমি পার্থক্য নিয়ে সমস্যার মুখোমুখি হয়েছি;

moment().diff([YOUR DATE])

সুতরাং, নিম্নলিখিত সঙ্গে আসে;

const dateValidate = moment(moment().format('YYYY-MM-DD')).diff(moment([YOUR SELECTED DATE HERE]).format('YYYY-MM-DD'))

IF dateValidate > 0 
   //it's past day
else
   //it's current or future

কিছু উন্নতি করার জন্য দয়া করে নির্দ্বিধায় মন্তব্য করুন।

ধন্যবাদ,


3
একটি ভাল উত্তর লিখতে কিভাবে দয়া করে পর্যালোচনা করুন । কোড-কেবল উত্তরগুলি নিরুৎসাহিত করা হয়েছে কারণ তারা কীভাবে সমস্যাটি সমাধান করে তা ব্যাখ্যা করে না। এটি কী করে এবং এই প্রশ্নের ইতিমধ্যে থাকা বহু উত্তরগুলির মধ্যে এটি কীভাবে উন্নত হয় তা বোঝাতে আপনার উত্তর আপডেট করা উচিত ।
ফ্লফিকিটেন

0

আমি এটি অন্য কোনও কিছুর জন্য চেয়েছিলাম কিন্তু শেষ পর্যন্ত এমন একটি কৌশল পেয়েছি যা আপনি চেষ্টা করতে পারেন

somedate.calendar(compareDate, { sameDay: '[Today]'})=='Today'

var d = moment();
 var today = moment();
 
 console.log("Usign today's date, is Date is Today? ",d.calendar(today, {
    sameDay: '[Today]'})=='Today');
    
 var someRondomDate = moment("2012/07/13","YYYY/MM/DD");
 
 console.log("Usign Some Random Date, is Today ?",someRondomDate.calendar(today, {
    sameDay: '[Today]'})=='Today');
    
  
 var anotherRandomDate =  moment("2012/07/13","YYYY/MM/DD");
 
 console.log("Two Random Date are same date ? ",someRondomDate.calendar(anotherRandomDate, {
    sameDay: '[Today]'})=='Today');
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>


0

নিম্নলিখিত সঙ্গে পরীক্ষা করুন:

let isContinue = moment().diff('2020-04-04T20:06:11+05:30')/1000

এটি কয়েক সেকেন্ডের মধ্যে ফিরে আসছে ..

যদি 2 মিনিটের শর্ত হিসাবে পরীক্ষা করে থাকে তবে

if (isContinue < 120) {
  ..To check otp details or further logic
} else {
   // otp is getting invalid
}

0

সহজ উত্তর হবে:

const firstDate = moment('2020/10/14'); // the date to be checked
const secondDate = moment('2020/10/15'); // the date to be checked

firstDate.startOf('day').diff(secondDate.startOf('day'), 'days'); // result = -1
secondDate.startOf('day').diff(firstDate.startOf('day'), 'days'); // result = 1

এটি মধ্যরাতের মানটি যাচাই করবে এবং একটি সঠিক ফলাফল প্রদান করবে। এটি যখন দু'টি তারিখের মধ্যে সময় পার্থক্য হয় 24 ঘন্টারও কম হয় তখনও এটি কাজ করবে।

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