একটি মুহুর্তে একটি সময়কাল যুক্ত করুন (moment.js)


149

মুহুর্তের সংস্করণ: ২.০.০

দস্তাবেজগুলি পড়ার পরে , আমি ভেবেছিলাম এটি সরাসরি-ফরোয়ার্ড হবে (ক্রোম কনসোল):

var timestring1 = "2013-05-09T00:00:00Z";
var timestring2 = "2013-05-09T02:00:00Z";
var startdate = moment(timestring1);
var expected_enddate = moment(timestring2);
var returned_endate = startdate.add(moment.duration(2, 'hours'));
returned_endate == expected_enddate  // false
returned_endate  // Moment {_i: "2013-05-09T00:00:00Z", _f: "YYYY-MM-DDTHH:mm:ss Z", _l: undefined, _isUTC: false, _a: Array[7]…}

এটি একটি তুচ্ছ উদাহরণ, তবে আমি এটি কাজ করতেও পারি না। আমার মনে হচ্ছে আমি এখানে বড় কিছু মিস করছি, তবে সত্যিই তা পাই না। এমনকি এটি কাজ করে বলে মনে হয় না:

startdate.add(2, 'hours')
    // Moment {_i: "2013-05-09T00:00:00Z", _f: "YYYY-MM-DDTHH:mm:ss Z", _l: undefined, _isUTC: false, _a: Array[7]…}

কোন সাহায্যের অনেক প্রশংসা হবে।

সম্পাদনা করুন: আমার শেষ লক্ষ্যটি বাইনারি স্ট্যাটাস চার্ট তৈরি করা যা আমি এখানে কাজ করছি তার মতো: http://bl.ocks.org/phobson/5872894

আপনি দেখতে পাচ্ছেন, আমি এই সমস্যাটি যখন কাজ করি তখন আমি ডামি এক্স-ভ্যালু ব্যবহার করছি।

উত্তর:


264

আমি মনে করি আপনি ডকুমেন্টেশনের একটি মূল বিষয় মিস করেছেন .add()

সময় যুক্ত করে আসল মুহুর্তকে রূপান্তরিত করে।

আপনি এটি একটি ফাংশন হিসাবে চিকিত্সা করা প্রতীয়মান ফলাফল ফিরে আসে বলে মনে হচ্ছে। করা সহজ ভুল। :)

আপনি যদি রিটার্ন মানটি ব্যবহার করেন তবে এটি যেমনটি শুরু করেছিলেন ঠিক তেমন একই প্রকৃত অবজেক্ট। এটি কেবল পদ্ধতিতে শৃঙ্খলার সুবিধার্থে ফিরে এসেছে।

এখানে বর্ণিত মুহুর্তটি ক্লোন করে আপনি এই আচরণটি ঘিরে কাজ করতে পারেন ।

এছাড়াও, আপনি কেবল ==পরীক্ষার জন্য ব্যবহার করতে পারবেন না । আপনি প্রতিটি মুহুর্তকে একই আউটপুটে ফর্ম্যাট করতে এবং সেগুলির সাথে তুলনা করতে পারেন, বা আপনি কেবল .isSame()পদ্ধতিটি ব্যবহার করতে পারেন ।

আপনার কোডটি এখন:

var timestring1 = "2013-05-09T00:00:00Z";
var timestring2 = "2013-05-09T02:00:00Z";
var startdate = moment(timestring1);
var expected_enddate = moment(timestring2);
var returned_endate = moment(startdate).add(2, 'hours');  // see the cloning?
returned_endate.isSame(expected_enddate)  // true

আমি প্রতিক্রিয়া সত্যিই প্রশংসা করি, ম্যাট। এটি অনেক কিছুই পরিষ্কার করে দেয়। এখানে এখনও আমি আমার মাথা পেতে পারি না: এটির প্রতিটি প্রতিনিধিত্ব returned_endateআমি জানি যে কীভাবে অ্যাক্সেস করতে হয় তা এখনও মধ্যরাতে, এবং 2 টা নাগাদ। আমার এটি সকাল 2 টা হওয়া দরকার যাতে আমি ডি 3 চার্ট তৈরি করতে পারি যা আমি কাজ করছি (সম্পাদিত প্রশ্ন দেখুন) see আবার ধন্যবাদ.
পল এইচ

14
নিশ্চিত করুন যে আপনি যেমন প্রদর্শন পদ্ধতি, এক কল .format()বা .toDate()বা .unix()। শুধু কাঁচা মুহূর্তের দিকে তাকানো ভাল কাজ করে না। আপনি yourmoment.utc().format()এটিকে স্থানীয় সময়ের পরিবর্তে ইউটিসি হিসাবে ফর্ম্যাট করতে চাইলে কিছু করতেও পারেন ।
ম্যাট জনসন-পিন্ট

3
হ্যাঁ, এই মুহুর্তগুলি স্থাবর নয় এমনটি ভুলে গিয়ে একবারে একবারে তা হ'ল। নিস!
ওয়েলবোনিও

30

আমি এমন একটি অ্যাপ্লিকেশনটিতে কাজ করছি যেখানে আমরা লাইভ রুট ট্র্যাক করি। যাত্রী চালকের বর্তমান অবস্থান এবং তার অবস্থান পৌঁছানোর প্রত্যাশিত আগমনের সময়টি দেখাতে চায়। সুতরাং বর্তমান সময়ের সাথে আমার কিছু সময়কাল যুক্ত করা দরকার।

সুতরাং আমি একই কাজ করতে নীচের উল্লিখিত উপায়টি পেয়েছি। আমরা আমাদের বর্তমান সময়ে মুহুর্তে কোনও সময়কাল (ঘন্টা, মিনিট এবং সেকেন্ড) যুক্ত করতে পারি:

var travelTime = moment().add(642, 'seconds').format('hh:mm A');// it will add 642 seconds in the current time and will give time in 03:35 PM format

var travelTime = moment().add(11, 'minutes').format('hh:mm A');// it will add 11 mins in the current time and will give time in 03:35 PM format; can use m or minutes 

var travelTime = moment().add(2, 'hours').format('hh:mm A');// it will add 2 hours in the current time and will give time in 03:35 PM format

এটি আমার প্রয়োজনীয়তা পূরণ করে। এটা হতে পারে আপনি সাহায্য করতে পারেন।


9
এটি 'মিনিট' মিনিটে নয় 'মিনিট' হওয়া উচিত।
তানভী আগরওয়াল

2
এটি 'মিনিট' 'মিনিট' না হওয়া উচিত। বা কমপক্ষে এটি 'এম' হতে পারে। আপনার উত্তর আপডেট করুন!
উলিরিচ দোহৌ

1
এটি আমার উত্তরে ইতিমধ্যে 'মিনিট' এবং আমি ইতিমধ্যে উল্লেখ করেছি যে আমরা 'মিনিট' এর পরিবর্তে 'এম' ব্যবহার করতে পারি (উত্তরের মন্তব্য দেখুন)। আমি মনে করি আমার উত্তর আপডেট করার দরকার নেই।
মহিমা অগ্রবাল

6

যাদের startTime(যেমন 12 ঘন্টা: 30: 30) এবং একটি duration(120 এর মতো মিনিটের মান হয়), আপনি এটির endTimeমতো অনুমান করতে পারেন:

const startTime = '12:30:00';
const durationInMinutes = '120';

const endTime = moment(startTime, 'HH:mm:ss').add(durationInMinutes, 'minutes').format('HH:mm');

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