মুহুর্তের জেএস ইউটিসি থেকে স্থানীয় সময়


145

আমি ইউটিসি সময়কে স্থানীয় সময় রূপান্তর করার চেষ্টা করছি। আমি এই লিঙ্কটি থেকে এই উদাহরণটি অনুসরণ করছি: http://jsfiddle.net/FLhpq/4/light/ । আমি সঠিক স্থানীয় আউটপুট পাব বলে মনে হচ্ছে না। উদাহরণস্বরূপ, যদি এটির 10: 30 am এখানে থাকে তবে 10:30 অসুস্থ হওয়ার পরিবর্তে 15: 30 পান। এখানে আমার কোডটি রয়েছে:

var date = moment.utc().format('YYYY-MM-DD HH:mm:ss');

var localTime  = moment.utc(date).toDate();

localTime = moment(localTime).format('YYYY-MM-DD HH:mm:ss');

console.log("moment: " + localTime);

আমি সময়টি যা করি তা সবসময়ই ইউটিসি সময়ে প্রকাশিত হয়। আমি হিউস্টনে থাকি তাই আমি জানি টাইমজোনই সমস্যা। আমি লিঙ্কটিতে কোডটি অনুসরণ করেছি তবে স্থানীয় সময়টি পেতে পারে বলে মনে হচ্ছে। আমি কি ভুল করছি?

উত্তর:


238

ইউটিসি সময়কে লোকাল এ রূপান্তর করতে আপনাকে ব্যবহার করতে হবে moment.local()

আরও তথ্যের জন্য ডক্স দেখুন

উদাহরণ:

var date = moment.utc().format('YYYY-MM-DD HH:mm:ss');

console.log(date); // 2015-09-13 03:39:27

var stillUtc = moment.utc(date).toDate();
var local = moment(stillUtc).local().format('YYYY-MM-DD HH:mm:ss');

console.log(local); // 2015-09-13 09:39:27

ডেমো:

var date = moment.utc().format();
console.log(date, "- now in UTC"); 

var local = moment.utc(date).local().format();
console.log(local, "- UTC now to local"); 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>


16
আমার পক্ষে কাজ করেনি, সময়টি এখনও আমার ব্রাউজারদের সময়ের চেয়ে 5 ঘন্টা এগিয়ে রয়েছে যা সঠিক
ব্রায়ান স্ক্রোগিনস

যদি মুহুর্তগুলি স্থানীয় সময় অঞ্চল সম্পর্কে সচেতন থাকে তবে এটি পুনরুদ্ধার করার কোনও উপায় আছে বা moment.tz.guess () এটি করার দরকার আছে?
JEremyB

@ jEremyB, moment().format('Z')এবং moment().format('ZZ')আপনাকে সহায়তা করতে পারে। এছাড়াও, (new Date()).getTimezoneOffset()একবার আপনার
নজরে

@brianScroggins, নিশ্চিত করুন না ভুলবেন হতে .utc(date)। প্রথম অংশে, লাইনটি var local = ...না থাকা বিভ্রান্তিকর হতে পারে।
জোসলিন

62

এটা চেষ্টা কর:

let utcTime = "2017-02-02 08:00:13";

var local_date= moment.utc(utcTime ).local().format('YYYY-MM-DD HH:mm:ss');

3
যে অঞ্চলটি এটি সংরক্ষণ করা হয়েছিল তা নির্দিষ্ট করে দেওয়া আমার জন্য কাজ করেছে (এই উত্তর)। এছাড়াও, পাওয়া যায় জীবনকে আরও সহজ করে তোলে যদি আপনি সর্বদা ক্লায়েন্টের পক্ষ থেকে বিন্যাসে বিন্যাসে জিনিসগুলি সংরক্ষণ করেন।
হুয়ান পাবলো উগাস

1
এটি আমার ক্ষেত্রে কাজ করেছে যেখানে আমরা আমাদের ডিবিতে ইউটিসিতে সময় সাশ্রয় করি এবং কেবল ক্লায়েন্টের উপর স্থানীয় সময় প্রদর্শন করি। ধন্যবাদ।
অ্যালেক্স এহলার্ট

18
let utcTime = "2017-02-02 08:00:13.567";
var offset = moment().utcOffset();
var localText = moment.utc(utcTime).utcOffset(offset).format("L LT");

এই জেএসফিডেলটি চেষ্টা করে দেখুন


2
এটি দুর্দান্ত কাজ করে তবে স্থানীয় () একই ফলাফলটি কেন দেয় না?
স্টিভ

এই কোলাহলটি আমার কম্পিউটারে নিম্নলিখিত ফলাফলটি দেয়: 02/02/2017 8:00 পূর্বাহ্ণ (ইউটিসি সময়) 02/02/2017 10:00 পূর্বাহ্ণ (স্থানীয় সময়) 02/02/2017 9:00 পূর্বাহ্ন (স্থানীয় সময় অন্যভাবে )
স্টিভ

3

দ্রষ্টব্য: দয়া করে সেই অনুযায়ী তারিখের ফর্ম্যাটটি আপডেট করুন।

ফর্ম্যাট তারিখ

   __formatDate: function(myDate){
      var ts = moment.utc(myDate);
      return ts.local().format('D-MMM-Y');
   }

ফর্ম্যাট সময়

  __formatTime: function(myDate){
      var ts = moment.utc(myDate);
      return ts.local().format('HH:mm');
  },

3

স্থানীয় সময় ইউটিসি রূপান্তর করতে

let UTC = moment.utc()
let local = moment(UTC).local()

অথবা আপনি সরাসরি স্থানীয় সময় পেতে চান

let local = moment()

var UTC = moment.utc()
console.log(UTC.format()); // UTC time

var cLocal = UTC.local()
console.log(cLocal.format()); // Convert UTC time

var local = moment();
console.log(local.format()); // Local time
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>


0

আমি একটি ফাংশন তৈরি করেছি যা সমস্ত সময় অঞ্চলকে স্থানীয় সময়ে রূপান্তর করে।

প্রয়োজনীয়তা:

1. npm i moment-timezone

function utcToLocal(utcdateTime, tz) {
    var zone = moment.tz(tz).format("Z") // Actual zone value e:g +5:30
    var zoneValue = zone.replace(/[^0-9: ]/g, "") // Zone value without + - chars
    var operator = zone && zone.split("") && zone.split("")[0] === "-" ? "-" : "+" // operator for addition subtraction
    var localDateTime
    var hours = zoneValue.split(":")[0]
    var minutes = zoneValue.split(":")[1]
    if (operator === "-") {
        localDateTime = moment(utcdateTime).subtract(hours, "hours").subtract(minutes, "minutes").format("YYYY-MM-DD HH:mm:ss")
    } else if (operator) {
        localDateTime = moment(utcdateTime).add(hours, "hours").add(minutes, "minutes").format("YYYY-MM-DD HH:mm:ss")
    } else {
        localDateTime = "Invalid Timezone Operator"
    }
    return localDateTime
}

utcToLocal("2019-11-14 07:15:37", "Asia/Kolkata")

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