টাইমজোনটি অফসেট কীভাবে পাবেন তা আমি জানি তবে আমার যা প্রয়োজন তা হল "আমেরিকা / নিউ ইয়র্ক" এর মতো কোনও কিছু সনাক্ত করার দক্ষতা। এটি কি জাভাস্ক্রিপ্ট থেকেও সম্ভব বা এটি আমি অফসেটের উপর ভিত্তি করে অনুমান করতে যাচ্ছি something
টাইমজোনটি অফসেট কীভাবে পাবেন তা আমি জানি তবে আমার যা প্রয়োজন তা হল "আমেরিকা / নিউ ইয়র্ক" এর মতো কোনও কিছু সনাক্ত করার দক্ষতা। এটি কি জাভাস্ক্রিপ্ট থেকেও সম্ভব বা এটি আমি অফসেটের উপর ভিত্তি করে অনুমান করতে যাচ্ছি something
উত্তর:
আন্তর্জাতিকীকরণ এপিআই সমর্থন ব্যবহারকারী টাইমজোন পেয়ে, এবং হয় সমর্থিত সমস্ত বর্তমান ব্রাউজারে।
console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)
মনে রাখবেন যে কিছু পুরানো ব্রাউজার সংস্করণ যা আন্তর্জাতিকীকরণ এপিআই সমর্থন করে, ব্যবহারকারীর টাইমজোন স্ট্রিংয়ের পরিবর্তে timeZone
সম্পত্তি সেট করা আছে undefined
। আমি যতটা বলতে পারি, লেখার সময় (জুলাই 2017) আইই 11 ব্যতীত সমস্ত বর্তমান ব্রাউজার ব্যবহারকারীর টাইমজোনকে স্ট্রিং হিসাবে ফিরিয়ে দেবে।
সর্বাধিক উত্সাহিত উত্তর সম্ভবত টাইমজোনটি পাওয়ার সবচেয়ে ভাল উপায়, তবে, Intl.DateTimeFormat().resolvedOptions().timeZone
ইংরেজিতে সংজ্ঞা অনুসারে আইএএনএ টাইমজোন নামটি দেয়।
আপনি যদি বর্তমান ব্যবহারকারীর ভাষায় টাইমজোনটির নাম চান তবে আপনি এটির Date
স্ট্রিং প্রতিনিধিত্ব থেকে এটি পার্স করতে পারেন :
function getTimezoneName() {
const today = new Date();
const short = today.toLocaleDateString(undefined);
const full = today.toLocaleDateString(undefined, { timeZoneName: 'long' });
// Trying to remove date from the string in a locale-agnostic way
const shortIndex = full.indexOf(short);
if (shortIndex >= 0) {
const trimmed = full.substring(0, shortIndex) + full.substring(shortIndex + short.length);
// by this time `trimmed` should be the timezone's name with some punctuation -
// trim it from both sides
return trimmed.replace(/^[\s,.\-:;]+|[\s,.\-:;]+$/g, '');
} else {
// in some magic case when short representation of date is not present in the long one, just return the long one as a fallback, since it should contain the timezone's name
return full;
}
}
console.log(getTimezoneName());
ক্রোম এবং ফায়ারফক্সে পরীক্ষিত।
অবশ্যই, এটি কিছু পরিবেশে যেমন ইচ্ছা তেমন কাজ করবে না। উদাহরণস্বরূপ, নোড.জেএস GMT+07:00
নামের পরিবর্তে একটি জিএমটি অফসেট (উদাঃ ) প্রদান করে। তবে আমি মনে করি এটি ফলব্যাক হিসাবে এখনও পঠনযোগ্য।
PS যেমন Intl...
সমাধান হিসাবে আইই 11 এ কাজ করবে না ।
আপনি এই স্ক্রিপ্ট ব্যবহার করতে পারেন। http://pellepim.bitbucket.org/jstz/
কাঁটাচামচ বা ক্লোন সংগ্রহস্থল এখানে। https://bitbucket.org/pellepim/jstimezonedetect
একবার আপনি স্ক্রিপ্ট অন্তর্ভুক্ত করার পরে, আপনি - jstz.olson.timezones
ভেরিয়েবলের সময় অঞ্চলগুলির তালিকা পেতে পারেন ।
এবং ক্লায়েন্ট ব্রাউজারের সময় অঞ্চল নির্ধারণ করতে নিম্নলিখিত কোড ব্যবহার করা হয়।
var tz = jstz.determine();
tz.name();
Jstz উপভোগ করুন!
নাম অনুসারে টাইমজোন পুনরুদ্ধার করুন (যেমন "আমেরিকা / নিউ ইয়র্ক")
moment.tz.guess();
Intl.DateTimeFormat().resolvedOptions().timeZone
Intl.DateTimeFormat().resolvedOptions().timeZone
এ ফেরত দেয় undefined
, তবে moment.tz.guess()
সঠিক মানটি দেয়
আপনি ম্যাপিং টেবিলটি এখানে সহজেই নিজের কোডটি লিখতে পারেন: http://www.timeanddate.com/time/zones/
বা, মুহূর্ত-সময় অঞ্চল লাইব্রেরি ব্যবহার করুন: http://momentjs.com/timezone/docs/
দেখা zone.name; // America/Los_Angeles
বা, এই গ্রন্থাগার: https://github.com/Canop/tzdetect.js
এটি GMT
পুরানো জাভাস্ক্রিপ্টে টাইমজোন কোড পায় (যেমন, ) পুরানো ইঞ্জিন সহ আমি গুগল অ্যাপ স্ক্রিপ্ট ব্যবহার করছি):
function getTimezoneName() {
return new Date().toString().get(/\((.+)\)/);
}
কারওর প্রয়োজন হলে আমি এটি এখানে রাখছি।
UTC
/ এর জন্য কাজ করে GMT
। দেখে মনে হচ্ছে অন্যদের বানান হয়েছে; যেমন Pacific Daylight Time
,।
এই কোডটি এখান থেকে উল্লেখ করার চেষ্টা করুন
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js">
</script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jstimezonedetect/1.0.4/jstz.min.js">
</script>
<script type="text/javascript">
$(document).ready(function(){
var tz = jstz.determine(); // Determines the time zone of the browser client
var timezone = tz.name(); //'Asia/Kolhata' for Indian Time.
alert(timezone);
});
</script>
জাভাস্ক্রিপ্টে, ডেট.জেটটাইমজোনঅফসেট () পদ্ধতিটি ইউটিসি থেকে টাইম-জোন অফসেটটি বর্তমান লোকেলের জন্য কয়েক মিনিটের মধ্যে ইউটিসি থেকে ফিরিয়ে দেয়।
var x = new Date();
var currentTimeZoneOffsetInHours = x.getTimezoneOffset() / 60;
মোমেন্ট'টাইমজোন একটি দরকারী সরঞ্জাম হবে। http://momentjs.com/timezone/
সময় অঞ্চলগুলির মধ্যে তারিখগুলি রূপান্তর করুন
var newYork = moment.tz("2014-06-01 12:00", "America/New_York");
var losAngeles = newYork.clone().tz("America/Los_Angeles");
var london = newYork.clone().tz("Europe/London");
newYork.format(); // 2014-06-01T12:00:00-04:00
losAngeles.format(); // 2014-06-01T09:00:00-07:00
london.format(); // 2014-06-01T17:00:00+01:00