জাভাস্ক্রিপ্টে ক্লায়েন্টের টাইমজোন অফসেট পাওয়া


613

আমি কীভাবে দর্শকের সময় অঞ্চল তথ্য সংগ্রহ করতে পারি? আমার টাইমজোন যেমন GMT অফসেট সময় প্রয়োজন।


3
আমি এখন একই সমস্যা অনুভব করছি। এখানে একটি আকর্ষণীয় পদ্ধতির।
ট্যামস পাপ

31
শিরোনামটি সময় অঞ্চল জন্য জিজ্ঞাসা করে, যখন পাঠ্যটি জিএমটি অফসেটের জন্য জিজ্ঞাসা করে। এটি 2 টি ভিন্ন জিনিস। একটি টাইমজোন ডিএসটি সম্পর্কিত তথ্য অন্তর্ভুক্ত করে, ইউটিসি অফসেট দেয় না। একটি টাইমজোনটির একটি নাম এবং ইতিহাস রয়েছে, অফসেটটি তা করে না। "জেএসে ক্লায়েন্টের জিএমটি অফসেট পাওয়া" এ শিরোনাম সম্পাদনা করার প্রস্তাব দিন।
সিটিকিড

আমার টাইমজোন দরকার জিএমটি অফসেটটিও সহায়ক হবে।
ডেভওয়ালি

9
এখানে উত্তরগুলি বেশিরভাগ অফসেটে ফোকাস করে । জন্য সময় জোন দেখুন এই উত্তরটাইমজোন ট্যাগ উইকিতে "টাইম অঞ্চল! = অফসেট" দেখুন ।
ম্যাট জনসন-পিন্ট

7
আপনি এই ইনটেল.ডেটটাইমফর্ম্যাট () সমাধান করা অধ্যায়গুলি ()। সময় অঞ্চল
মঙ্গেশ

উত্তর:


594

var offset = new Date().getTimezoneOffset();
console.log(offset);

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

মনে রাখবেন যে সমস্ত টাইম অঞ্চলগুলি পুরো ঘন্টা দ্বারা অফসেট হয় না: উদাহরণস্বরূপ, নিউফাউন্ডল্যান্ডটি ইউটিসি বিয়োগ 3h 30 মি (সমীকরণের বাইরে ডাইটলাইট সেভিংয়ের সময়কে ছেড়ে যায়)।


42
@ অ্যাবার্নিয়ার অবৈধতা সম্পর্কে বিবৃতি getTimezoneOffsetকার্যকর হয়? আপনি যে নিবন্ধটি উল্লেখ করছেন এটি জুন 2007 এর তারিখ এবং এতে কীভাবে কার্যকারিতাটি সঠিক নয় তার কোনও বিবরণ নেই। এবং প্রকৃতপক্ষে jsTimezoneDetectআপনি চিহ্নিত লাইব্রেরিটি getTimezoneOffsetনিজেই ব্যবহার করে।
মাইক

5
@ আবার্নিয়ার এটি ইএস 1 সাল থেকে একটি মান, সুতরাং আমি নিশ্চিত যে বাস্তবায়নের যে কোনও সমস্যা এখনই সংশোধন করা যেতে পারে, আমি বলতে চাইছি এটি একটি 7 বছরের পুরানো নিবন্ধ article
লাসাগাআন্ড্রয়েড

49
var hrs = -(new Date().getTimezoneOffset() / 60) সাধারণত ব্যবহৃত ঘন্টাগুলিতে অফসেট পেতে
এডউইন ড্যানিয়েল

6
দেখে মনে হচ্ছে এটি দিবালোক সংরক্ষণের
সময়টিকে

21
timezone! =utc offset
bendytree

479

টাইমজোন গণনা করার জন্য অফসেট ব্যবহার করা একটি ভুল পদ্ধতি, এবং আপনি সর্বদা সমস্যার সম্মুখীন হন। সময়ের জোন এবং দিবালোক সংরক্ষণের নিয়মগুলি এক বছরে বেশ কয়েকটি উপলক্ষে পরিবর্তিত হতে পারে এবং পরিবর্তনগুলি ধরে রাখা শক্ত।

জাভাস্ক্রিপ্টে সিস্টেমের আইএএনএ টাইমজোন পেতে আপনার ব্যবহার করা উচিত

console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)

সেপ্টেম্বর 2019 পর্যন্ত, এটি বিশ্বব্যাপী ব্যবহৃত 95% ব্রাউজারে কাজ করে

পুরানো সামঞ্জস্যের তথ্য

ইকমা -402 / 1.0 বলছে যে timeZoneকনস্ট্রাক্টরকে সরবরাহ না করা থাকলে অপরিজ্ঞাত হতে পারে। তবে, ভবিষ্যতের খসড়া (3.0) সিস্টেম ডিফল্ট টাইমজোন পরিবর্তন করে এই সমস্যাটিকে স্থির করেছে।

ইসমাস্ক্রিপ্ট ইন্টারন্যাশনালাইজেশন এপিআই-র এই সংস্করণে, কনস্ট্রাক্টরকে সরবরাহ করা বিকল্পগুলির মধ্যে timeZoneকোনও timeZoneসম্পত্তি সরবরাহ না করা থাকলে সম্পত্তি অপরিজ্ঞাত থাকবেIntl.DateTimeFormat । তবে অ্যাপ্লিকেশনগুলিতে এটির উপর নির্ভর করা উচিত নয়, কারণ ভবিষ্যতের সংস্করণগুলি তার পরিবর্তে হোস্ট পরিবেশের বর্তমান সময় অঞ্চল সনাক্তকরণের জন্য একটি স্ট্রিং মান প্রদান করতে পারে।

একমা -402 / 3.0 এ যা এখনও একটি খসড়ায় রয়েছে এটিতে পরিবর্তিত হয়েছে

ECMAScript 2015 আন্তর্জাতিকীকরণ API এর এই সংস্করণে, কনস্ট্রাক্টরকে সরবরাহ করা বিকল্প বিকল্পগুলিতে timeZoneকোনও timeZoneসম্পত্তি সরবরাহ না করা থাকলে সম্পত্তিটি ডিফল্ট সময় অঞ্চলটির নাম হবে Intl.DateTimeFormat। পূর্ববর্তী সংস্করণ timeZoneসম্পত্তি এক্ষেত্রে অপরিশোধিত রেখে গেছে ।


17
টাইমজোন পাওয়ার জন্য এটিই একমাত্র উত্তর, যা কেবলমাত্র অফসেটের বিপরীতে কিছু ব্যবহারকারীদের প্রয়োজন হতে পারে। সুতরাং, ২০১-0-০৯-এ আপডেট হিসাবে, ইন্টেল বেশিরভাগ আধুনিক ব্রাউজারগুলিতে কাজ করে তবে সাফারি নয়। ব্রাউজারটির জন্য, এখানে যুক্তিসঙ্গতভাবে সঠিক জাভাস্ক্রিপ্ট ফ্যালব্যাক রয়েছে
pellepim.bitbucket.org/jstz

6
যাচাই করা হয়েছে যে এটি এখন সাফারিতে কাজ করে। (সংস্করণ 10.0 ব্যবহার করে)
BadPirate

2
এটি যদি সমস্ত আধুনিক ব্রাউজারে কাজ করে তবে চমৎকার হবে। তবে আইই ১১ এবং সর্বশেষ ফায়ারফক্স উভয়ই সময় অঞ্চল সংস্থার জন্য অপরিবর্তিত রয়েছে return
হ্যাপ্রোগ

7
আমি এখন Chrome 58, এজ 40 এবং ফায়ারফক্স 53 দিয়ে পরীক্ষা করেছি - এটি তাদের সকলের জন্যই কাজ করে। এটি আইই ১১ এর সাথে কাজ করে না, আমি অপেরা পরীক্ষা করিনি।
সুমা

7
এই API এ ফিরে আসা সময় অঞ্চলগুলির তালিকা পেতে আমার কিছুটা সময় লেগেছে। এখানে এটা en.wikipedia.org/wiki/List_of_tz_database_time_zones
জেভিয়ার Poinas

123

আমি বুঝতে পেরেছি যে এই উত্তরটি কিছুটা সাময়িক বিষয় নয় তবে আমি কল্পনা করেছি যে আমাদের মধ্যে অনেকের উত্তর সন্ধানের জন্য সময় অঞ্চলটি প্রদর্শনের জন্যও ফর্ম্যাট করতে চেয়েছিল এবং সম্ভবত অঞ্চলটির সংক্ষিপ্তকরণও পেতে চাই। সুতরাং এখানে এটি ...

আপনি যদি ক্লায়েন্টের সময় অঞ্চলটি সুন্দরভাবে ফর্ম্যাট করতে চান তবে আপনি জাভাস্ক্রিপ্ট ডেট.টোস্ট্রিং পদ্ধতিতে নির্ভর করতে পারেন এবং করতে পারেন:

var split = new Date().toString().split(" ");
var timeZoneFormatted = split[split.length - 2] + " " + split[split.length - 1];

এটি আপনাকে "GMT-0400 (EST)" দেবে উদাহরণস্বরূপ, প্রযোজ্য সময়সীমা মিনিট সহ।

বিকল্পভাবে, রেজেক্সের সাহায্যে আপনি যে কোনও পছন্দসই অংশটি বের করতে পারেন:

"GMT-0400 (EDT)" এর জন্য:

new Date().toString().match(/([A-Z]+[\+-][0-9]+.*)/)[1]

"GMT-0400" এর জন্য:

new Date().toString().match(/([A-Z]+[\+-][0-9]+)/)[1]

কেবল "ইডিটি" এর জন্য:

new Date().toString().match(/\(([A-Za-z\s].*)\)/)[1]

কেবল "-0400" এর জন্য:

new Date().toString().match(/([-\+][0-9]+)\s/)[1]

তারিখ.আর স্ট্রিং রেফারেন্স: https://developer.mozilla.org/en/JavaScript/ উল্লেখ / গ্লোবাল_অবজেক্টস / তারিখ / টো স্ট্রিং


4
ক্রমটির সাথে ভাঙ্গা যেমন এটি টাইমজোনটির নাম সংযোজন করে। পরিবর্তে একটি ধ্রুবক কিন্তু split.leth ব্যবহার করবেন না split[4] + " " + split[5]?!
ক্রিস্টোফ রাউসি

4
এটি (আশ্চর্য, অবাক) আইই তেও কাজ করে না। আমি কেবল বিভক্ত তারিখ অবজেক্টের একটি কনসোল ডাম্প করেছি। এটি ক্রোম, ফায়ারফক্স এবং সাফারিতে একই, তবে আই-তে আলাদা। সুতরাং, আপনি ধ্রুবক সূচকেও বিশ্বাস করতে পারবেন না। সোমবার 02 ডিসেম্বর 2013 10:22:50 GMT-0500 (EST): ক্রোম, এফএফ, সাফারি; সোমবার 2 ডিসেম্বর 10:22:50 ইস্ট 2013:
আইই

1
আপনাকে ধন্যবাদ! আমি ব্রাউজারের টাইমজোনটি প্রদর্শন করার জন্য হুপসের মধ্য দিয়ে ঝাঁপিয়ে পড়েছি ..... ইডু তারিখ ()। টুস্ট্রিং ()। ম্যাচ (/ ([এজেড]] + [\ + -] [০-৯] +। *) /) [) 1] ঠিক আমার যা প্রয়োজন ছিল!
কিউইসুনদেবী

1
এটি কাজ করে না। আমার জন্য splitরয়েছে: ["Mon", "Mar", "13", "2017", "14:05:22", "GMT-0400", "(Eastern", "Daylight", "Time)"]সুতরাং ফলাফলটি হলDaylight Time)
DLeh

7
এটি করার পরে জেএস সময়ের প্রকৃত উপস্থাপনাটি new Date().toString()আপনার স্থানীয় সেটিংসের উপর সম্পূর্ণ নির্ভর করে এটি আসলে ভাল ধারণা নয় । আপনার অনুরূপ অন্যান্য ক্লায়েন্টদের আউটপুট আশা করা খুব খারাপ ধারণা।
অক্টোপাস 21

71

এটি ইতিমধ্যে উত্তর হিসাবে দেওয়া হয়েছে কীভাবে একটি পূর্ণসংখ্যার হিসাবে মিনিটের মধ্যে অফসেট পাবেন, তবে যদি কেউ স্থানীয় জিএমটি স্ট্রিং হিসাবে অফসেট চায় যেমন "+1130":

function pad(number, length){
    var str = "" + number
    while (str.length < length) {
        str = '0'+str
    }
    return str
}

var offset = new Date().getTimezoneOffset()
offset = ((offset<0? '+':'-')+ // Note the reversed sign!
          pad(parseInt(Math.abs(offset/60)), 2)+
          pad(Math.abs(offset%60), 2))

1
pad(parseInt(Math.abs(offset/60)), 2)এটি সঠিক হওয়ার জন্য আপনার প্রথম প্যাডিংয়ের বদলে নেওয়া দরকার ... অন্যথায় আপনি আমার ক্ষেত্রে যেমন +5.530 পেয়ে যাবেন ... আমি নিশ্চিত নই যে এখানে গণিতের তল ইত্যাদি আরও ভাল জিনিস হবে কি না .... তবে এটি কমপক্ষে আমাকে প্রত্যাশা অনুযায়ী +0530 দেয়
অভিনব সিং

ঠিক কী আমি সন্ধান করছি। ধন্যবাদ!
কোডনুকার

এটি সঠিক ফলাফল দেবে: এই.প্যাড (ম্যাথ.ফ্লুর (ম্যাথ.এবস (অফসেট / 60))), 2)
বিবেক

আপনার প্যাড ফাংশনটি ব্যবহার করার পরিবর্তে, আমি এটি করা সহজ করে দেখছি: অফসেট = (অফসেট <0? "+": "-") + ("0000" + পার্সিয়ান্ট ((ম্যাথ.অ্যাবস (অফসেট / 60%)))) .স্লাইস (-4)
ফ্লুরবিয়াস

67

তুমি ব্যবহার করতে পার:

মুহূর্ত-সময় অঞ্চল

<script src="moment.js"></script>
<script src="moment-timezone-with-data.js"></script>

// retrieve timezone by name (i.e. "America/Chicago")
moment.tz.guess();

ব্রাউজারের সময় অঞ্চল সনাক্তকরণ সঠিক হয়ে উঠার চেয়ে জটিল, কারণ ব্রাউজারের দেওয়া খুব কম তথ্য দেওয়া আছে।

মোমেন্ট টাইমজোন ব্যবহার Date.getTimezoneOffset()এবং Date.toString()চলতি প্রায় মুহূর্তের একটি থাবা উপর যতটা সম্ভব ব্রাউজার পরিবেশ সম্পর্কে অনেক তথ্য সংগ্রহ করতে। এটি তখন সমস্ত সময় অঞ্চল ডেটা লোড হওয়া তথ্যের সাথে তুলনা করে এবং নিকটতম ম্যাচটি প্রদান করে। সম্পর্কের ক্ষেত্রে, সবচেয়ে বেশি জনসংখ্যার শহরটির সাথে সময় অঞ্চলটি ফিরে আসে।

console.log(moment.tz.guess()); // America/Chicago

12
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এটি কেবলমাত্র অফসেটের পরিবর্তে প্রকৃত টাইমজোন নাম দেয় । মনে রাখবেন যে টাইমজোন অফসেটটি নাম থেকে নেওয়া যেতে পারে, বিপরীতটি সত্য নয়। ডিএসটি এবং অন্যান্য সূক্ষ্মতার কারণে, একাধিক সময় অঞ্চল কেবল বছরের নির্দিষ্ট কিছু দিনে একই অফসেট পেতে পারে।
রোমেন জি

1
এটির জন্য এখন একটি নেটিভ সমাধান রয়েছে - ইন্টেল এপিআই । যদিও moment.js আগের দিনটিতে একটি দুর্দান্ত গ্রন্থাগার ছিল, বর্তমানে এর চেয়ে অনেক ছোট বিকল্প রয়েছে ( ডেটজেস , ডেট-এফএনএস )। মুহুর্ত বিশাল ; দয়া করে ক্লায়েন্ট অ্যাপ্লিকেশনগুলির জন্য এটি সুপারিশ করবেন না।
ড্যান ড্যাসক্লেস্কু

43

আমি আমার প্রকল্পে একটি ফাংশন লিখেছি, যা টাইমজোনকে hh:mmফর্ম্যাটে ফিরিয়ে দেয় । আমি আশা করি এটি কারও সহায়ক হতে পারে:

function getTimeZone() {
    var offset = new Date().getTimezoneOffset(), o = Math.abs(offset);
    return (offset < 0 ? "+" : "-") + ("00" + Math.floor(o / 60)).slice(-2) + ":" + ("00" + (o % 60)).slice(-2);
}

// Outputs: +5:00

ওয়ার্কিং ফিডল


1
ধন্যবাদ! এটাই আমার দরকার!
জেরেমি

15

একটি ওয়ান-লাইনার যা অফসেট এবং টাইম জোন উভয়কেই দেয় একটি নতুন তারিখ অবজেক্টে কেবলমাত্র টাইমস্ট্রিং () এ কল করা । এমডিএন থেকে:

toTimeString()পদ্ধতি সময় আমেরিকান ইংরেজি মানব পাঠযোগ্য আকারে একটি তারিখ বস্তুর অংশ ফেরৎ।

ধরাটি হ'ল টাইমজোনটি স্ট্যান্ডার্ড আইএএনএ ফর্ম্যাটে নেই; এটি "মহাদেশ / শহর" আইএএনএ ফর্ম্যাটের চেয়ে কিছুটা বেশি ব্যবহারকারী-বান্ধব । চেষ্টা কর:

console.log(new Date().toTimeString().slice(9));
console.log(Intl.DateTimeFormat().resolvedOptions().timeZone);
console.log(new Date().getTimezoneOffset() / -60);

ক্যালিফোর্নিয়ায় এখনই, ইন্টেল এপিআই ফিরে toTimeString()আসার Pacific Daylight Timeসময় ফিরে আসে America/Los_Angeles। কলম্বিয়াতে আপনি পেয়ে যাবেন Colombia Standard Time, বনাম America/Bogota

মনে রাখবেন যে এই প্রশ্নের আরও অনেক উত্তর ডেট.টোস্ট্রিং () এ কল করে একই তথ্য পাওয়ার চেষ্টা করে। এই পদ্ধতিটি নির্ভরযোগ্য নয়, যেমন এমডিএন ব্যাখ্যা করে :

তারিখের দৃষ্টান্তগুলি নির্দিষ্ট সময়ে নির্দিষ্ট বিন্দুকে উল্লেখ করে। স্ট্রিং () তে কল করা আমেরিকান ইংরাজীতে মানব পাঠযোগ্য আকারে ফর্ম্যাট করা তারিখটি ফিরিয়ে দেবে। [...] কখনও কখনও সময়ের অংশের একটি স্ট্রিং পাওয়া বাঞ্ছনীয়; যেমন একটি জিনিস toTimeString()পদ্ধতি দ্বারা সম্পন্ন করা যেতে পারে ।

toTimeString()কারণ অনুবর্তী ECMA-262 বাস্তবায়ন ইঞ্জিন স্ট্রিং থেকে প্রাপ্ত ভিন্ন হতে পারে পদ্ধতি বিশেষভাবে কার্যকর toString()জন্য Date, বস্তু হিসাবে ফর্ম্যাট বাস্তবায়ন নির্ভর হয়; সরল স্ট্রিং স্লাইসিং এপ্রোচগুলি একাধিক ইঞ্জিনের মধ্যে সামঞ্জস্যপূর্ণ ফলাফল তৈরি করতে পারে না।


13

চেষ্টা getTimezoneOffset()এর Dateবস্তু:

var curdate = new Date()
var offset = curdate.getTimezoneOffset()

এই পদ্ধতিটি মিনিটের মধ্যে অফসেট টাইম জোনটি দেয় যা জিএমটি এবং মিনিটের মধ্যে স্থানীয় সময়ের মধ্যে পার্থক্য।



7

সঙ্গে moment.js :

moment().format('zz');

6
zএবং zz১.6.০ হিসাবে অবহিত
MrUpsidown

3
@ এমআরসিপডাউন এটি এখন ZএবংZZ
ব্রুলিওবো

4
@ ব্রাবলিও এই প্যারামিটারগুলি একই জিনিস ফেরত দেয় না। জেড এবং জেডজ টাইমজোন যেমন সিএসটি দিয়েছিল, তবে জেড এবং জেডজেড অফসেটটি ফেরত দেয়, যেমন -0600।
লুকা স্পিলার

সর্বশেষ দস্তাবেজ শো .zoneAbbr()প্রতিস্থাপন করেছে zএবং zz। ডকুমেন্টেশন এখানে
tabish89

1
যদিও moment.js আগের দিনটিতে একটি দুর্দান্ত গ্রন্থাগার ছিল, বর্তমানে এর চেয়ে অনেক ছোট বিকল্প রয়েছে ( ডেজেস , ডেট-এফএনএস )। মুহুর্ত বিশাল ; দয়া করে ক্লায়েন্ট অ্যাপ্লিকেশনগুলির জন্য এটি সুপারিশ করবেন না।
ড্যান ড্যাসক্লেস্কু

6

সঙ্গে , আপনি বর্তমান টাইমজোন হিসাবে সন্ধান করতে পারেন

console.log(moment().utcOffset()); // (-240, -120, -60, 0, 60, 120, 240, etc.)
<script src="https://cdn.jsdelivr.net/momentjs/2.13.0/moment.min.js"></script>


সঙ্গে , আপনি বর্তমান টাইমজোন হিসাবে সন্ধান করতে পারেন

console.log(dayjs().utcOffset()); // (-240, -120, -60, 0, 60, 120, 240, etc.)
<script src="https://unpkg.com/dayjs@1.8.10/dayjs.min.js"></script>

উভয় এপিআই মিনিটের মধ্যেই অফসেট অফসেস দেয়।


যদিও moment.js আগের দিনটিতে একটি দুর্দান্ত গ্রন্থাগার ছিল, বর্তমানে এর চেয়ে অনেক ছোট বিকল্প রয়েছে ( ডেজেস , ডেট-এফএনএস )। মুহুর্ত বিশাল ; দয়া করে ক্লায়েন্ট অ্যাপ্লিকেশনগুলির জন্য এটি সুপারিশ করবেন না।
ড্যান ড্যাসক্লেস্কু

1
"ডেজেজেসের সাথে আপনি বর্তমান টাইমজোনটিকে এটির মতো খুঁজে পেতে পারেন" ঠিক সঠিক নয় - আপনি কেবল অফসেটটি খুঁজে পাবেন, টাইমজোনটি নয় । এছাড়াও, ডেজেসের টাইমজোন সমর্থন নেই । এর .utcOffset () পদ্ধতিটি নেটিভের উপরে একটি সাধারণ মোড়ক getTimezoneOffset()
ড্যান ড্যাসক্লেস্কু

4

ঘন্টা সময় টাইমজোন-

var offset = new Date().getTimezoneOffset();
if(offset<0)
    console.log( "Your timezone is- GMT+" + (offset/-60));
else
    console.log( "Your timezone is- GMT-" + offset/60);

আপনি মন্তব্য হিসাবে উল্লিখিত হিসাবে আপনি যদি সুনির্দিষ্ট হতে চান, তবে আপনার এইরকম চেষ্টা করা উচিত-

var offset = new Date().getTimezoneOffset();

if(offset<0)
{
    var extraZero = "";
    if(-offset%60<10)
      extraZero="0";

    console.log( "Your timezone is- GMT+" + Math.ceil(offset/-60)+":"+extraZero+(-offset%60));
}
else
{
    var extraZero = "";
    if(offset%60<10)
      extraZero="0";

    console.log( "Your timezone is- GMT-" + Math.floor(offset/60)+":"+extraZero+(offset%60));
}


ভেনিজুয়েলার মতো পুরো ঘন্টা না হলে টাইমজোনগুলির জন্য কাজ করে না, যেখানে এটি GMT-4.5 প্রত্যাবর্তন করে
মিরকো

হ্যা সেটা ঠিক. 0.5 এর অর্থ 0.5 * 30 মিনিট। আমি মনে করি আপনি এটি পেয়েছেন কেন এটি 0.5 দেওয়া হচ্ছে?
আবরার জাহিন

হ্যাঁ, তাই GMT-4.5 কোনও বৈধ সময় অঞ্চল নয়, GMT-4: 30 হওয়ার জন্য এটি কিছুটা অতিরিক্ত পার্সিং প্রয়োজন
মিরকো

@ মিরকো এখন উত্তরটির দ্বিতীয় ভাগটি আপনার জন্য
আবরার

আপনি যদি আরও সুনির্দিষ্ট হতে চান তবে GMT এর পরিবর্তে ইউটিসি ব্যবহার করুন, [হিল্টন এবং ম্যাকার্থি 2013, পি। 231-2। ], উইকিপিডিয়া জিএমটিতেও দেখুন - ( en.wikedia.org/wiki/Greenwich_Mean_Time )
টম কুশেল

3

আপনার কেবলমাত্র যদি প্রয়োজন হয় "এমএসটি" বা "ইএসটি" সময় অঞ্চল সংক্ষেপণ:

function getTimeZone(){
    var now = new Date().toString();
    var timeZone = now.replace(/.*[(](.*)[)].*/,'$1');//extracts the content between parenthesis
    return timeZone;
}

ব্যবহার Date.toString()করা নির্ভরযোগ্য নয় এবং MDN কেন তা ব্যাখ্যা করে। আমি আমার ডাকে তাদের ডক্স থেকে প্রাসঙ্গিক বিভাগটি আটকিয়েছি ।
ড্যান ড্যাসকলেসকু

3

এই ফলাফলটি অপারেটরটি টাইমজোনের বিপরীতে দেখুন। তাই কিছু গণিতের ফাংশন প্রয়োগ করুন তারপরে সংখ্যাটি কম বা বেশি বৈধ করুন।

এখানে চিত্র বর্ণনা লিখুন

এমডিএন ডকুমেন্টটি দেখুন

var a = new Date().getTimezoneOffset();

var res = -Math.round(a/60)+':'+-(a%60);
res = res < 0 ?res : '+'+res;

console.log(res)


1
নেতিবাচক মান হ্রাস, কিছু সমস্যা
অরুণ প্রসাদ ES

1
কেন round? এটা হওয়া উচিত floor, তাই না?
কিওয়ারটি

3
function getLocalTimeZone() {
    var dd = new Date();
    var ddStr = dd.toString();
    var ddArr = ddStr.split(' ');
    var tmznSTr = ddArr[5];
    tmznSTr = tmznSTr.substring(3, tmznSTr.length);
    return tmznSTr;
}

উদাহরণ: থু জুন 21 2018 18:12:50 GMT + 0530 (ভারত স্ট্যান্ডার্ড সময়)

ও / পি: +0530


ব্যবহার Date.toString()করা নির্ভরযোগ্য নয় এবং MDN কেন তা ব্যাখ্যা করে। আমি আমার ডাকে তাদের ডক্স থেকে প্রাসঙ্গিক বিভাগটি আটকিয়েছি ।
ড্যান ড্যাসকলেসকু


2

এই মানটি ব্যবহারকারীর মেশিন থেকে এবং এটি যে কোনও সময় পরিবর্তিত হতে পারে তাই আমি মনে করি এটির কোনও গুরুত্ব নেই, আমি কেবল একটি আনুমানিক মান পেতে চাই এবং তারপরে এটি আমার সার্ভারে GMT এ রূপান্তর করতে চাই।

উদাহরণস্বরূপ, আমি তাইওয়ান থেকে এসেছি এবং এটি আমার জন্য "+8" ফিরিয়ে দেয়।

কাজের উদাহরণ

জাতীয়

function timezone() {
    var offset = new Date().getTimezoneOffset();
    var minutes = Math.abs(offset);
    var hours = Math.floor(minutes / 60);
    var prefix = offset < 0 ? "+" : "-";
    return prefix+hours;
}


$('#result').html(timezone());

এইচটিএমএল

<div id="result"></div>

ফলাফল

+8

2

এতে new Date() আপনি যে টাইমজোন নামটি করতে পারেন তা পেতে অফসেটটি পেতে পারেন:

new Date().toString().replace(/(.*\((.*)\).*)/, '$2');

আপনি ()তারিখের শেষে মান পেতে পারেন , এটি টাইমজোনটির নাম।


ব্যবহার Date.toString()করা নির্ভরযোগ্য নয় এবং MDN কেন তা ব্যাখ্যা করে। আমি আমার ডাকে তাদের ডক্স থেকে প্রাসঙ্গিক বিভাগটি আটকিয়েছি । এছাড়াও, ইতিমধ্যে কমপক্ষে 3 বার এই উত্তর দেওয়া হয়েছে।
ড্যান ড্যাসক্লেস্কু

2

এটি আমার সমাধান হবে:


    // For time zone:
    const timeZone = /\((.*)\)/.exec(new Date().toString())[1];
    
    // Offset hours:
    const offsetHours = new Date().getTimezoneOffset() / 60;
    
    console.log(`${timeZone}, ${offsetHours}hrs`);

1

বিকল্প হিসাবে new Date().getTimezoneOffset()এবংmoment().format('zz') আপনি ব্যবহার করতে পারেন:

var offset = moment.parseZone(Date.now()).utcOffset() / 60
console.log(offset);
<script src="https://cdn.jsdelivr.net/momentjs/2.13.0/moment.min.js"></script>

jstimezone এছাড়াও বেশ বগী এবং unmaintained আছে ( https://bitbucket.org/pellepim/jstimezonedetect/issues?status=new&status=open )


যদিও moment.js আগের দিনটিতে একটি দুর্দান্ত গ্রন্থাগার ছিল, বর্তমানে এর চেয়ে অনেক ছোট বিকল্প রয়েছে ( ডেজেস , ডেট-এফএনএস )। মুহুর্ত বিশাল ; দয়া করে ক্লায়েন্ট অ্যাপ্লিকেশনগুলির জন্য এটি সুপারিশ করবেন না।
ড্যান ড্যাসক্লেস্কু

1

অফসেটটিকে পোস্টে রূপান্তর করতে এটি ব্যবহার করুন:

var offset = new Date().getTimezoneOffset();
console.log(offset);
this.timeOffSet = offset + (-2*offset);
console.log(this.timeOffSet);

-2

আমি কেবলমাত্র 3 টি অক্ষরের স্ট্রিং ("পিডিটি" এর মতো) খুঁজছিলাম এবং মার্কেজের উত্তরটি চেষ্টা করেছিলাম তবে ক্রস ব্রাউজারের সমর্থনের জন্য এটি কিছুটা টুইট করতে হয়েছিল। ভাগ্যক্রমে, স্ট্রিংটি শেষ সম্ভাব্য ম্যাচ :)

কফিস্ক্রিপ্টে আমি যা করেছি তা এখানে:

browserTimezone = ->
  userDate = new Date()
  zoneMatches = userDate.toString().match(/([A-Z][A-Z][A-Z])/g)
  userZone = zoneMatches[zoneMatches.length - 1]

আইই 8, আই 9, সাফারি 9, ফায়ারফক্স 44, এবং ক্রোম 48 এ কাজ করে


2
যদিও 4 টি বর্ণ সহ টাইমজোন রয়েছে - সতর্কতা অবলম্বন করুন: সিইএসটি উদাহরণস্বরূপ (মধ্য ইউরোপীয় গ্রীষ্মকালীন সময়)
jbrosi

ব্যবহার Date.toString()করা নির্ভরযোগ্য নয় এবং MDN কেন তা ব্যাখ্যা করে। আমি আমার ডাকে তাদের ডক্স থেকে প্রাসঙ্গিক বিভাগটি আটকিয়েছি ।
ড্যান ড্যাসক্লেস্কু

-3

আপনি কেবল moment.js এবং jstz.js অন্তর্ভুক্ত করতে পারেন

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jstimezonedetect/1.0.6/jstz.min.js"></script>

এবং তারপর

<script>
$(function(){
 var currentTimezone = jstz.determine();
 var timezone = currentTimezone.name();
 alert(timezone);
});

</script>

-3

এটি আমার পক্ষে খুব ভাল কাজ:

// Translation to offset in Unix Timestamp
let timeZoneOffset = ((new Date().getTimezoneOffset())/60)*3600;

1
কোন ব্যাখ্যা?

-4

আপনি কেবল এটি চেষ্টা করতে পারেন। এটি আপনাকে বর্তমান মেশিনের সময় ফিরিয়ে দেবে

var _d = new Date(), t = 0, d = new Date(t*1000 + _d.getTime())


এইভাবে কী করা উচিত তা আমি ভাবি: new Date(new Date().getTime()); এটি প্রদর্শিত হবে: "শুক্র ডিসেম্বর 28 2018 10:15:23 GMT + 0100 (মধ্য ইউরোপীয় মানক সময়)}}"
ডার্মিস

-4

এটি কাজ করবে।


var time = new Date(),
timestamp = Date(1000 + time.getTime());
console.log(timestamp);

Thu May 25 2017 21:35:14 GMT+0300 (IDT)

অনির্দিষ্ট

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