কীভাবে স্থানীয় সময় অঞ্চলগুলিতে মোমেন্ট.জেএস তারিখ রূপান্তর করবেন?


84

আমি মোমেন্ট.জেএস এবং মোমেন্ট-টাইমজোন ফ্রেমওয়ার্কগুলি ব্যবহার করি এবং আমার একটি মোমেন্ট.জেএস তারিখের অবজেক্ট থাকে যা স্পষ্টভাবে ইউটিসি টাইমজোনে রয়েছে। ব্রাউজারের বর্তমান টাইমজোনকে কীভাবে রূপান্তর করতে পারি?

var testDateUtc = moment.tz("2015-01-30 10:00:00", "UTC"); var localDate = ???

সুতরাং আমি যদি স্থানীয় সময় অঞ্চল ব্যবহারকারীদের খুঁজে পেতে পারি তবে তা ঠিক হবে; অথবা বিকল্পভাবে আমি তারিখের অবজেক্টটিকে অন্য ডেটা অবজেক্টে রূপান্তর করতে চাই যা "স্থানীয় সময় অঞ্চল" ব্যবহার করে, বাস্তবে তা কী তা বিবেচনা না করে।

উত্তর:


140

এর জন্য আপনার মুহুর্ত-সময় অঞ্চল ব্যবহার করার দরকার নেই। মূল মুহুর্ত.জেএস লাইব্রেরিতে ইউটিসি এবং স্থানীয় সময় অঞ্চলের সাথে কাজ করার জন্য সম্পূর্ণ কার্যকারিতা রয়েছে।

var testDateUtc = moment.utc("2015-01-30 10:00:00");
var localDate = moment(testDateUtc).local();

সেখান থেকে আপনি আশা করতে পারেন যে কোনও ফাংশন ব্যবহার করতে পারেন:

var s = localDate.format("YYYY-MM-DD HH:mm:ss");
var d = localDate.toDate();
// etc...

নোট করুন যে পাসওয়ার্ড দ্বারা testDateUtc, যা একটি momentঅবজেক্ট, moment()কনস্ট্রাক্টরে ফিরে , এটি একটি ক্লোন তৈরি করে । অন্যথায়, আপনি যখন ফোন করেছিলেন তখন .local()এটি কেবল testDateUtcমানটির পরিবর্তে মান পরিবর্তন করে localDate। মুহুর্তগুলি পরিবর্তনযোগ্য

এছাড়াও মনে রাখবেন যে যদি আপনার আসল ইনপুটটিতে টাইম জোন যেমন অফসেট থাকে +00:00বা যেমন থাকে Zতবে আপনি কেবল এটির সাথে সরাসরি পার্স করতে পারেন moment। আপনার ব্যবহার করার দরকার নেই .utcবা .local। উদাহরণ স্বরূপ:

var localDate = moment("2015-01-30T10:00:00Z");

4
আপনার সচেতন হওয়া উচিত যে এই পদ্ধতিটি ডিএসটি অফসেটগুলিকে অ্যাকাউন্টে নেয় না, এটি moment-timezoneলাইব্রেরি ব্যবহার করা নিরাপদ
Jaime Agudo

4
পছন্দ করেছেন localসত্যিই ডিএসটি আমলে নেয়।
ম্যাট জনসন-পিন্ট

আপনি নিজের থেকে উদাহরণস্বরূপ অনুবাদ থেকে অনুবাদ ESTকরতে CETপারেন, আপনি যদি চান NY-> চান তবে আগামীকাল একটি উদাহরণ রাখব Madrid। আমি পাল্টা নমুনা গ্রহণ করব :)
যায়েম আগুডো

4
আপনি সঠিক যে মুহূর্তটি মুহূর্ত-সময় অঞ্চল ছাড়া ধরণের রূপান্তর করতে পারে না। তবে এটি ইউটিসি এবং স্থানীয়দের মধ্যে সঠিকভাবে রূপান্তর করতে পারে, যা ওপি বলেছিল।
ম্যাট জনসন-পিন্ট

4
স্থানীয় নিয়মগুলি ব্রাউজার থেকে আসে। সুতরাং যতক্ষণ স্থানীয় সময় অঞ্চলটি ডিএসটি অন্তর্ভুক্ত করে, মুহূর্তটি এটি ব্যবহার করবে।
ম্যাট জনসন-পিন্ট

23
var dateFormat = 'YYYY-DD-MM HH:mm:ss';
var testDateUtc = moment.utc('2015-01-30 10:00:00');
var localDate = testDateUtc.local();
console.log(localDate.format(dateFormat)); // 2015-30-01 02:00:00
  1. আপনার তারিখের ফর্ম্যাটটি সংজ্ঞায়িত করুন।
  2. একটি মুহুর্তের অবজেক্ট তৈরি করুন এবং ইউটিসি পতাকাটিকে বস্তুর উপর সত্য করে দিন।
  3. আসল মুহূর্তের অবজেক্ট থেকে রূপান্তরিত একটি স্থানীয় মুহুর্তের অবজেক্ট তৈরি করুন।
  4. স্থানীয় মুহুর্তের অবজেক্ট থেকে ফর্ম্যাট করা স্ট্রিংটি ফিরিয়ে দিন।

দেখুন: http://momentjs.com/docs/#/manipulating/local/


এই উত্তরটি আরও ভাল হবে যদি এটি ব্যাখ্যা করে যে কেন এটি কাজ করে, সম্ভবত ডকুমেন্টেশনের রেফারেন্স সহ। এছাড়াও, আপনি এই উত্তরটি মার্চ মাসে পোস্ট করা প্রশ্নের চেয়ে কীভাবে আলাদা তা ব্যাখ্যা করতে চাইতে পারেন ...
হেরেটিক বানর

@ অ্যান্ড্রুহেন্ডারসন, স্থানীয় মেশিন সময় থেকে এক ঘন্টা এগিয়ে hy কেন হচ্ছে?
রমেশ পাপাগান্তি

@ রমেশপাপাগান্টি সম্ভবত দিবালোকের সঞ্চয়? উদাহরণস্বরূপ পিডিটি বনাম পিএসটি। মুহুর্তটি বিশেষত স্থানীয়করণের ক্ষেত্রে সংস্করণগুলির মধ্যে API পরিবর্তন করতে পরিচিত। আপনি যদি কারণটি খুঁজে পান তবে আমাকে জানান।
অ্যান্ড্রুহেন্ডারসন

6

আমি যা করেছি তা এখানে:

var timestamp = moment.unix({{ time }});
var utcOffset = moment().utcOffset();
var local_time = timestamp.add(utcOffset, "minutes");
var dateString = local_time.fromNow();

যেখানে {{ time }}ইউটিসি টাইমস্ট্যাম্প।


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