আমি কীভাবে জাভাস্ক্রিপ্টে কোনও তারিখ থেকে কয়েক মিনিট বিয়োগ করব?


133

কীভাবে আমি এই ছদ্ম কোডটি কার্যক্ষম জেএসে অনুবাদ করতে পারি [শেষ বৈধ জাভাস্ক্রিপ্টের তারিখ ব্যতীত শেষের তারিখটি কোথা থেকে আসে তা নিয়ে চিন্তা করবেন না]।

var myEndDateTime = somedate;  //somedate is a valid js date  
var durationInMinutes = 100; //this can be any number of minutes from 1-7200 (5 days)

//this is the calculation I don't know how to do
var myStartDate = somedate - durationInMuntes;

alert("The event will start on " + myStartDate.toDateString() + " at " + myStartDate.toTimeString());

উত্তর:


199

একবার আপনি এটি জানতে পারবেন:

  • 1970 সালের 1 জানুয়ারি থেকে আপনি মিলিসেকেন্ডের সাথে কনস্ট্রাক্টরকেDate কল করে একটি তৈরি করতে পারেন ।
  • valueOf()একটি Date1 জানুয়ারি, 1970 সাল থেকে মিলিসেকেন্ড সংখ্যা
  • আছে 60,000এক মিনিটের মধ্যে মিলিসেকেন্ড: -]

... এটা এত কঠিন নয়।

নীচের কোডটিতে, একটি নতুন Dateথেকে উপযুক্ত সংখ্যক মিলিসেকেন্ডগুলি বিয়োগ করে তৈরি করা হয়েছে myEndDateTime:

var MS_PER_MINUTE = 60000;
var myStartDate = new Date(myEndDateTime - durationInMinutes * MS_PER_MINUTE);

6
আপনি যখন মিনিট যুক্ত করেন তবে হ্যান্ডেল করে না। আপনি যখন মিনিট যুক্ত করেন তখন সঠিকভাবে পরিচালনা করতে আপনার ব্যবহার করা উচিত .getTime()। উদাহরণ:var myStartDate = new Date(myEndDateTime.getTime() + durationInMinutes * MS_PER_MINUTE);
গ্যাব্রিয়েল এল। অলিভিয়রা

আপনি এটিও ব্যবহার করতে পারেন var myStartDate = somedate.addMinutes(-durationInMuntes);আমি ধরে নিয়েছি কোনওমতে তারিখের একটি অবজেক্ট
কুবাহাহ

1
এটি কাজ করে ... তবে একটি প্রশ্ন আছে যে তারিখ () কনস্ট্রাক্টরের 3 টি বিকল্প রয়েছে, যেমন 1: খালি 2: স্ট্রিং এবং 3: সংখ্যা বছর, সংখ্যা মাস .... সুতরাং উপরেরটি ব্যবহার করা হচ্ছে কোন নির্মাণকারীকে অনুসরণ করে?
জাফর


এটি কীভাবে ভুল হতে পারে তার উদাহরণ হিসাবে, ইউরোপ / লন্ডনকে টাইমজোন লোকাল হিসাবে ব্যবহার করে: var d = new Date("2017-10-29 01:50:00"), e = new Date(d.getTime() + 20 * 60000);আপনি কি ঠিক তাই আশা eকরবেন 02:10:00? নাঃ। 01:10:00। ডিএসটি বলে হাই। এবং তারপরে লিপ-সেকেন্ড রয়েছে ...
নিট দ্য ডার্ক অ্যাবসোল

81

এটি অর্জনের জন্য আপনি গেট এবং মিনিট সেট ব্যবহার করতে পারেন:

var endDate = somedate;

var startdate = new Date(endDate);

var durationInMinutes = 20;

startdate.setMinutes(endDate.getMinutes() - durationInMinutes);

52
এটি লক্ষ্য করার মতো যে setMinutes()সঠিকভাবে নেতিবাচক মিনিটগুলি পরিচালনা করতে যথেষ্ট স্মার্ট। তাই আপনি যদি শুরুর তারিখ 3:05 ছিল, এবং আপনি 30 মিনিট বিয়োগ করতে চান, আপনি কথা প্রসঙ্গে চাই -25setMinutes (), যা স্মার্ট যথেষ্ট জানাতে চাই যে, হয় 3:-25হয় 2:35। (অর্থাত্ এটি কোনও ব্যতিক্রম ছুঁড়ে না))
কিপ করুন

2
@ কিপ - ধন্যবাদ, অন্তর্দৃষ্টি যা এই উত্তরকে সার্থক করে তোলে। তবে সমস্ত ব্রাউজারগুলি কি এটির নিশ্চয়তা দেয়? আমি জিজ্ঞাসা করি কেননা এমডিএন কেবল 0 - 59 এর অনুমতি দেয় - তবে আমি সন্দেহ করি যে ডকসগুলি এই ক্ষেত্রে ঠিক ভুল আছে? দেখুন: বিকাশকারী.মোজিলা.আর.ইন
জাভা

এটি আমার পক্ষে আরও কার্যকর ছিল, আমি একটি বিদ্যমান তারিখ অবজেক্ট উদাহরণ থেকে সময়টি বিয়োগ করতে চেয়েছিলাম যা নির্মাণকারীর মাধ্যমে একটি নির্দিষ্ট উপায়ে সেট করা হয়েছিল। ধন্যবাদ!
বিল এফিন মারে

1
কেবল সেই .setMinutes(...)জোর হ্যান্ডেল intমানগুলি মনে রাখবেন । আপনি যদি এটিতে সেট 1.5 minutesকরেন তবে Dateএটি কেবল সেট করবে 1 minuteএবং সেকেন্ড আগের মতো থাকবে।
গ্যাব্রিয়েল এল। অলিভিরা

আমি যখন স্টার্ট ডেট = শেষ তারিখ চেষ্টা করতাম তখন অনুরূপ ব্যবহারের ক্ষেত্রে আমি ভুল মান পাচ্ছিলাম। সমস্যাটি দেখে মনে হচ্ছে যেখানে অগভীর অনুলিপিটি ঘটে
raghav710

35

সবকিছু কেবল টিকটিক, পদ্ধতি মুখস্ত করার দরকার নেই ...

var aMinuteAgo = new Date( Date.now() - 1000 * 60 );

অথবা

var aMinuteLess = new Date( someDate.getTime() - 1000 * 60 );

হালনাগাদ

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


2
আইএমও এটি এত সহজ নয়। এই কোডটি আসলে কী করে তা ডিক্রিপ্ট করতে কিছু প্রচেষ্টা লাগে। এই ধরণের যুক্তি একটি ফাংশনে আবৃত করা আরও ভাল পদ্ধতির।
sszarek

12

moment.js এর তারিখের অবজেক্টগুলি পরিচালনা করার জন্য কিছু দুর্দান্ত সুবিধার পদ্ধতি রয়েছে

.Subtract পদ্ধতি, আপনি একটি তারিখ হইতে সময় ইউনিট একটি নির্দিষ্ট পরিমাণ বিয়োগ করতে, পরিমাণ এবং timeunit স্ট্রিং প্রদানের মাধ্যমে পারেন।

var now = new Date();
// Sun Jan 22 2017 17:12:18 GMT+0200 ...
var olderDate = moment(now).subtract(3, 'minutes').toDate();
// Sun Jan 22 2017 17:09:18 GMT+0200 ...

6

এটি আমি খুঁজে পেয়েছি:

//First, start with a particular time
var date = new Date();

//Add two hours
var dd = date.setHours(date.getHours() + 2);

//Go back 3 days
var dd = date.setDate(date.getDate() - 3);

//One minute ago...
var dd = date.setMinutes(date.getMinutes() - 1);

//Display the date:
var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var date = new Date(dd);
var day = date.getDate();
var monthIndex = date.getMonth();
var year = date.getFullYear();
var displayDate = monthNames[monthIndex] + ' ' + day + ', ' + year;
alert('Date is now: ' + displayDate);

সূত্র:

http://www.javascriptcookbook.com/article/Perform-date-manipulations-based-on-adding-or-subtracting-time/

https://stackoverflow.com/a/12798270/1873386


5
var date=new Date();

//here I am using "-30" to subtract 30 minutes from the current time.
var minute=date.setMinutes(date.getMinutes()-30); 

console.log(minute) //it will print the time and date according to the above condition in Unix-timestamp format.

আপনি ইউনিক্স টাইমস্ট্যাম্পকে প্রচলিত সময়ে রূপান্তর করতে পারেন new Date()for উদাহরণস্বরূপ

var extract=new Date(minute)
console.log(minute)//this will print the time in the readable format.

আমি কিছু ফর্ম্যাটিং পরিবর্তন করেছি। দয়া করে নিশ্চিত হন যে এটি আপনার পোস্ট করার উদ্দেশ্যে কী তা প্রতিফলিত করে।
আদিগা


0

এটি আমিই করেছি: কোডেপেনে দেখুন

var somedate = 1473888180593;
var myStartDate;
//var myStartDate = somedate - durationInMuntes;

myStartDate = new Date(dateAfterSubtracted('minutes', 100));

alert("The event will start on " + myStartDate.toDateString() + " at " + myStartDate.toTimeString());

function dateAfterSubtracted(range, amount){
    var now = new Date();
    if(range === 'years'){
        return now.setDate(now.getYear() - amount);
    }
    if(range === 'months'){
        return now.setDate(now.getMonth() - amount);
    }
    if(range === 'days'){
        return now.setDate(now.getDate() - amount);
    }
    if(range === 'hours'){
        return now.setDate(now.getHours() - amount);
    }
    if(range === 'minutes'){
        return now.setDate(now.getMinutes() - amount);
    }
    else {
        return null;
    }
}

ওপি ব্যবহার করবেন না new Date(), তবে তার নির্দিষ্ট কিছু তারিখ রয়েছে এবং কেবল কয়েক মিনিট বিয়োগ সম্পর্কে জিজ্ঞাসা করা হয়েছে। এছাড়াও, আপনার কোডটি কাজ করে না - এটি ডেট অবজেক্টের পরিবর্তে ইউনিক্স টাইমস্ট্যাম্পটি দেয়।
মিশা পেরেকোভস্কি 19

0

এই ফাংশন সহ তারিখ শ্রেণি প্রসারিত করুন

// Add (or substract if value is negative) the value, expresed in timeUnit
// to the date and return the new date.
Date.dateAdd = function(currentDate, value, timeUnit) {

    timeUnit = timeUnit.toLowerCase();
    var multiplyBy = { w:604800000,
                     d:86400000,
                     h:3600000,
                     m:60000,
                     s:1000 };
    var updatedDate = new Date(currentDate.getTime() + multiplyBy[timeUnit] * value);

    return updatedDate;
};

সুতরাং আপনি যে কোনও তারিখে বেশ কয়েকটি মিনিট, সেকেন্ড, ঘন্টা, দিন ... যুক্ত করতে বা বিয়োগ করতে পারেন subst

add_10_minutes_to_current_date = Date.dateAdd( Date(), 10, "m");
subs_1_hour_to_a_date = Date.dateAdd( date_value, -1, "h");
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.