টাইপস্ক্রিপ্টে 2 তারিখের মধ্যে সময়কে আমি কীভাবে গণনা করতে পারি


138

এটি জাভাস্ক্রিপ্টে কাজ করে

new Date()-new Date("2013-02-20T12:01:04.753Z")

তবে টাইপস্ক্রিপ্টে আমি দুটি নতুন তারিখ বিশ্রাম নিতে পারি না

Date("2013-02-20T12:01:04.753Z")

প্যারামেটার তারিখের স্বাক্ষরের সাথে মেলে না বলে কাজ করবেন না

উত্তর:


152

1970-01-01 থেকে মোট মিলি সেকেন্ডে সময় পেতে getTimeপদ্ধতিটি ব্যবহার করুন এবং সেগুলি বিয়োগ করুন:

var time = new Date().getTime() - new Date("2013-02-20T12:01:04.753Z").getTime();

3
আমি মনে করি আপনি গেটটাইম () এবং মান ওফ () মিশ্রণ করছেন। দস্তাবেজ অনুসারে, গেটটাইম () "মিলি সেকেন্ডে সময় মান পায়" " যদিও এটির মানOf () যা "1 জানুয়ারী, 1970 ইউটিসি, মধ্যরাত থেকে মিলি সেকেন্ডে সঞ্চিত সময়ের মান প্রদান করে।"
কেন লিয়ন

উভয় একই কাজ:new Date(1970, 1, 1, 0, 0, 0, 0).valueOf() // returns 2674800000 new Date(1970, 1, 1, 0, 0, 0, 0).getTime() // returns 2674800000
prespic

এমডিএন গেটটাইম ডকুমেন্টেশন থেকে কেললিয়ন: আপনি অন্য তারিখের অবজেক্টে একটি তারিখ এবং সময় নির্ধারণে সহায়তা করতে এই পদ্ধতিটি ব্যবহার করতে পারেন। এই পদ্ধতিটি কার্যকরভাবে মান ওফ () পদ্ধতির সমতুল্য।
ফোনিক্স

29
new Date().getTime()ব্যবহারের পরিবর্তে একটি টিপ Date.now()যাতে আপনি অযথা নতুন জিনিস তৈরি না করেন।
ফোনিক্স

1
@ ফোনিক্স তাদের সমতুল্য হওয়া সম্পর্কে আকর্ষণীয়। আমাকে জানতে দেওয়ার জন্য ধন্যবাদ! এছাড়াও, নতুন অবজেক্ট তৈরি করা এড়ানো সম্পর্কে এটি ভাল পরামর্শ।
কেন লিয়ন

110

এটি টাইপস্ক্রিপ্টে এটি করা উচিত:

(new Date()).valueOf() - (new Date("2013-02-20T12:01:04.753Z")).valueOf()

ভাল পাঠযোগ্যতা:

      var eventStartTime = new Date(event.startTime);
      var eventEndTime = new Date(event.endTime);
      var duration = eventEndTime.valueOf() - eventStartTime.valueOf();

3
এটি সর্বাধিক সঠিক পন্থা, যেহেতু জাভাস্ক্রিপ্ট বস্তুগুলিতে গাণিতিক করার সময় অভ্যন্তরীণভাবে "valueOf" ব্যবহার করছে। টাইপস্ক্রিপ্টটি যথেষ্ট চালাক হওয়া উচিত (দুর্ভাগ্যজনক, এটি এখনও নেই) যেহেতু এটি ইতিমধ্যে জানে যে কোনও তারিখের জন্য মান মান পদ্ধতিটি lib.d.ts এ সংজ্ঞায়িত হিসাবে একটি সংখ্যা ফেরৎ দেয়
বিগজিম

1
আকর্ষণীয়ভাবে টাইপস্ক্রিপ্ট এখন এত চালাক যে আপনি যদি সংজ্ঞায়িত নাও করেন eventStartTimeএবং eventEndTimeসেই সময়কালটিকে টাইপ করা হয় number(এর অর্থ যদি আপনি এখানে আক্ষরিক অর্থে কোডের তৃতীয় লাইনটি গ্রহণ করেন তবে এখানে সময়কাল একটি সংখ্যা হবে)
সাইমন_উইভার

22

এটি কার্যকর হয় না কারণ Date - Dateপ্রকারের ধরণের ধরণের টাইপসক্রিপ্টটি প্রতিরোধের জন্য ঠিক নকশাকৃতভাবে নির্ভর করে।

+উপসর্গটি ব্যবহার করে এটির কার্যকারিতা রয়েছে:

var t = Date.now() - +(new Date("2013-02-20T12:01:04.753Z");

অথবা, আপনি যদি ব্যবহার না করা পছন্দ করেন Date.now():

var t = +(new Date()) - +(new Date("2013-02-20T12:01:04.753Z"));

এখানে আলোচনা দেখুন

অথবা আরও মার্জিত সমাধান ব্যবহারের জন্য নীচে সিদ্ধার্থ সিংয়ের উত্তর দেখুন valueOf()


1
লিঙ্ক সম্পাদনা অনুমোদন করা হচ্ছে কারণ, কোডপ্লেক্স বন্ধ হওয়ার কারণে, মূল আলোচনাটি এখন আর বিদ্যমান লিঙ্কে উপলভ্য নয়; ওয়েব.আরচিভ.আর.আর.জি. ব্যবহার করার ক্ষেত্রে যদি কিছু কম্বল আপত্তি না থাকে তবে এটি কোনওভাবেই মূল পোস্টটিকে ক্ষতিগ্রস্ত বা অপসারণ করে না, বরং এর অর্থ সংরক্ষণ করে।
জুড ফিশার

11

পার্থক্য গণনা করার জন্য আপনাকে +অপারেটরটি রাখতে হবে,

এইভাবে typescriptতারিখগুলিকে সংখ্যায় রূপান্তর করে।

+new Date()- +new Date("2013-02-20T12:01:04.753Z")

সেখান থেকে আপনি পার্থক্যটিকে minutesবা রূপান্তর করতে একটি সূত্র তৈরি করতে পারেন hours


3
// TypeScript

const today = new Date();
const firstDayOfYear = new Date(today.getFullYear(), 0, 1);

// Explicitly convert Date to Number
const pastDaysOfYear = ( Number(today) - Number(firstDayOfYear) );
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.