Moment.js ব্যবহার করে তারিখটিকে ইউটিসিতে রূপান্তর করুন


95

সম্ভবত এবং এর সহজ উত্তর তবে আমি মিলসেকেন্ডে কোনও ইউটিসি তারিখের সময় ফিরে পাওয়ার জন্য moment.js পাওয়ার কোনও উপায় খুঁজে পাচ্ছি না। আমি যা করছি তা এখানে:

var date = $("#txt-date").val(),
    expires = moment.utc(date);

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

উত্তর:


101

এটি নথিতে পাওয়া যায় । মুহুর্তের মতো একটি লাইব্রেরি সহ, আমি আপনাকে ডকুমেন্টেশনের পুরোটি পড়ার জন্য অনুরোধ করছি। এটা সত্যিই গুরুত্বপূর্ণ।

ধরে নিই ইনপুট পাঠ্যটি ব্যবহারকারীর স্থানীয় সময়ের নিরিখে প্রবেশ করা হয়েছে:

 var expires = moment(date).valueOf();

যদি ব্যবহারকারীকে নির্দেশ দেওয়া হয় আসলে কোনও ইউটিসি তারিখ / সময় লিখুন তবে:

 var expires = moment.utc(date).valueOf();

22
সম্পাদিত - "সহজেই" সরানো হয়েছে। :)
ম্যাট জনসন-পিন্ট

6
এবং যদি আমার কাছে ইতিমধ্যে টাইমজোন সহ একটি মুহুর্তের তারিখ-সময় থাকে তবে আমি কীভাবে এটি ইউটিসি তে রূপান্তর করতে পারি?
ア レ ッ ク ス

@ আলেকজান্ডার -.utc()
ম্যাট জনসন-পিন্ট

4
যে কাজ করে না। এটি কেবল তারিখে ব্যবহৃত পদ্ধতিগুলি পরিবর্তিত করে, তারিখ নিজেই নয়।
কলেন

4
@ কলিন - হ্যাঁ, তবে সাধারণত সেই পদ্ধতিগুলির মধ্যে একটিকে কল করতে .format()হবে যেমন ইউটিসি মান নির্গত করে। এটি অভ্যন্তরীণ তারিখের মানটি নিজেই পরিবর্তন করতে পারে না , কারণ একটি Dateইতিমধ্যে কোনও ইউটিসি টাইমস্ট্যাম্প ট্র্যাক করছে। এটি সর্বদা কেবল ব্যবহৃত পদ্ধতিগুলি যা ইউটিসি বা স্থানীয় সময় নির্গত করতে হবে তা নির্ধারণ করে। এক্ষেত্রে মুহূর্তও একই রকম।
ম্যাট জনসন-পিন্ট

53

আমি এই পদ্ধতিটি ব্যবহার করি এবং এটি কার্যকর হয়। ভ্যালুওফ আমার পক্ষে কাজ করে না।

moment.utc(yourDate).format()

4
এটি ডকুমেন্টেশন অনুযায়ী কাজ করে। স্থানীয় সময়কে ইউটিসিতে রূপান্তর করে।
কিশোর পওয়ার

4
এখানে মজার কিছু আছে। আমি moment.js ver ব্যবহার করছি। ২.১.1.১ এবং যদি 'আপনার তারিখ' হয় '2017-10-14T21: 00: 00Z' (এন-ইউএস) হয় তবে উপরের স্নিপেট ঠিক একই ফলাফল '2017-10-14T21: 00: 00Z' প্রদান করবে যা সম্ভবত এটি নয় ইউটিসি যেহেতু আমি জিএমটি +3 এ আছি। সঠিক ফলাফলটি হবে '2017-10-15T00: 00: 00 + 03: 00' এবং আপনি এটি 'মুহূর্ত (আপনার তারিখ)। ফর্ম্যাট ()' এর মাধ্যমে পাবেন।
এক্সডিএস

14

হিসাবে: moment.js version 2.24.0

আসুন আপনি একটি স্থানীয় তারিখ ইনপুট আছে বলছি, এই সঠিক উপায় আপনার রূপান্তর করতে DATETIME বা সময় ইনপুট ইউটিসি :

var utcStart = new moment("09:00", "HH:mm").utc();

বা ক্ষেত্রে আপনি একটি তারিখ নির্দিষ্ট করে

var utcStart = new moment("2019-06-24T09:00", "YYYY-MM-DDTHH:mm").utc();

আপনি দেখতে পাচ্ছেন ফলাফলের ফলাফলটি ইউটিসিতে ফিরে আসবে:

//You can call the format() that will return your UTC date in a string 
 utcStart.format(); 
//Result : 2019-06-24T13:00:00 

তবে আপনি নীচের মতো এটি করলে এটি ইউটিসিতে রূপান্তরিত হবে না :

var myTime = new moment.utc("09:00", "HH:mm"); 

আপনি কেবলমাত্র ইনপুটটি ঠিক সময়ে সময় নির্ধারণ করে দিচ্ছেন, মনে হচ্ছে আপনার মাইটাইমটি ইউটিসি-তে রয়েছে, .... আউটপুট 9:00 হবে


3
moment.utc(date).format(...); 

যেহেতু পথ,

moment().utc(date).format(...);

অদ্ভুত আচরণ করে ...


4
আপনি কি দয়া করে এর অদ্ভুত আচরণটি বিস্তারিতভাবে বর্ণনা করতে পারেন moment().utc(date).format(...)?
ফ্রিম্যান ল্যাম্বদা

4
আচরণটি অদ্ভুত নয়, সেগুলি বিভিন্ন পদ্ধতি। প্রথম moment.utc(date)জন্য পার্সdate । দ্বিতীয়টি moment().utc(date)হ'ল বর্তমান সময় ( ) হেরফের করার জন্য moment()এবং dateপরামিতি অকেজো কারণ এক্ষেত্রে .utc()কোনও প্যারাম আশা করা যায় না।
কোডিংহ্যামস্টার

2

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

// তারিখ = 2020-08-31T00: 00: 00Z আমি ডেনমার্কে অবস্থিত (টাইমজোনটি +2 ঘন্টা)

moment.utc (moment (তারিখ) .utc ()) format () // ফেরত 2020-08-30T22: 00: 00Z


1

অন্য সমস্ত কিছু যদি ব্যর্থ হয় তবে কেবল আপনার স্থানীয় অফসেটের বিপরীতমুখী দিয়ে পুনরায় পুনর্নির্মাণ করুন।

var timestamp = new Date();
var inverseOffset = moment(timestamp).utcOffset() * -1;
timestamp = moment().utcOffset( inverseOffset  );

timestamp.toISOString(); // This should give you the accurate UTC equivalent.

এটি কাজ করে না। কি কাজ সেটিং করা হয় না keepOffset, সত্যতে প্যারামিটার হিসেবে moment(timestamp).toISOString(true),
ক্রিস হেইন্সের

1

এখানে, আমি তারিখ অবজেক্টটি পাস করছি এবং এটি ইউটিসি সময়ে রূপান্তর করছি।

$.fn.convertTimeToUTC = function (convertTime) {
   if($(this).isObject(convertTime)) {
        return moment.tz(convertTime.format("Y-MM-DD HH:mm:ss"), moment.tz.guess()).utc().format("Y-MM-DD HH:mm:ss");
    }
};
// Returns if a value is an object
$.fn.isObject =  function(value) {
    return value && typeof value === 'object';
};


//you can call it as below
$(this).convertTimeToUTC(date);

1

এই উত্তর হবে:

moment.utc(moment(localdate)).format()
localdate = '2020-01-01 12:00:00'

moment(localdate)
//Moment<2020-01-01T12:00:00+08:00>

moment.utc(moment(localdate)).format()
//2020-01-01T04:00:00Z

0

Moment.js এর এই ডকুমেন্টেশনটি এখানে পড়ুন । নীচে উদাহরণ এবং আউটপুট দেখুন যেখানে আমি GMT সময়কে স্থানীয় সময়ে রূপান্তর করি (আমার অঞ্চলটি IST) এবং তারপরে আমি স্থানীয় সময়কে GMT তে রূপান্তর করি।

// convert GMT to local time
console.log('Server time:' + data[i].locationServerTime)
let serv_utc = moment.utc(data[i].locationServerTime, "YYYY-MM-DD HH:mm:ss").toDate();
console.log('serv_utc:' + serv_utc)
data[i].locationServerTime = moment(serv_utc,"YYYY-MM-DD HH:mm:ss").tz(self.zone_name).format("YYYY-MM-DD HH:mm:ss");
console.log('Converted to local time:' + data[i].locationServerTime)

// convert local time to GMT
console.log('local time:' + data[i].locationServerTime)
let serv_utc = moment(data[i].locationServerTime, "YYYY-MM-DD HH:mm:ss").toDate();
console.log('serv_utc:' + serv_utc)
data[i].locationServerTime = moment.utc(serv_utc,"YYYY-MM-DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss");
console.log('Converted to server time:' + data[i].locationServerTime)

আউটপুট হয়

Server time:2019-12-19 09:28:13
serv_utc:Thu Dec 19 2019 14:58:13 GMT+0530 (India Standard Time)
Converted to local time:2019-12-19 14:58:13
local time:2019-12-19 14:58:13
serv_utc:Thu Dec 19 2019 14:58:13 GMT+0530 (India Standard Time)
Converted to server time:2019-12-19 09:28:13

-1

মিলিসেকেন্ডগুলি তুলনা করে পুনরুদ্ধার করার জন্য আপনার কি কিছু দরকার নেই?

এই ক্ষেত্রে:

let enteredDate = $("#txt-date").val(); // get the date entered in the input
let expires = moment.utc(enteredDate); // convert it into UTC

এটির সাথে ইউটিসিতে আপনার মেয়াদ শেষ হবে। এখন আপনি ইউটিসিতে "ডান এখনই" তারিখটি পেতে এবং তুলনা করতে পারেন:

var rightNowUTC = moment.utc(); // get this moment in UTC based on browser
let duration = moment.duration(rightNowUTC.diff(expires)); // get the diff
let remainingTimeInMls = duration.asMilliseconds();

moment.valueOf()এবং (new Date()).getTime()উভয় রিটার্ন মিলিসেকেন্ড করার পর থেকে 1 জানুয়ারি 1970 ইউটিসি (এটা একটি আদর্শ)
Drenai
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.