জাভাস্ক্রিপ্টে অন্য টাইমজোনকে তারিখ রূপান্তর করুন


336

আমি সময়কে এক সময়কে অন্য সময় রূপান্তর করতে একটি ফাংশন সন্ধান করছি।

এটি দুটি পরামিতি প্রয়োজন,

  • তারিখ ("2012/04/10 10:10:30 +0000" বিন্যাসে)
  • টাইমজোন স্ট্রিং ("এশিয়া / জাকার্তা")

টাইমজোন স্ট্রিংটি http://en.wikedia.org/wiki/Zone.tab এ বর্ণনা করা হয়েছে

এটি করার কোনও সহজ উপায় আছে?


1
প্রদত্ত শহরের ইউটিসি অফসেট সন্ধান করুন। stackoverflow.com/questions/3002910/…
ব্র্যান্ডন বুন

3
আমি কেবল ইউটিসি অফসেটই নয়, দিবালোক সংরক্ষণ / গ্রীষ্মের সময় গণনা করতে চাই। তাই সময়টি সঠিকভাবে ফিরে আসবে।
রিজকি রামধন



ইউনিক্স ডেট কমান্ড ব্যবহার করে আপনার টাইম জোনের সেট অফ: তারিখ +% এস-ডি '1 জানুয়ারী 1970'
অ্যান্থনি

উত্তর:


191

var aestTime = new Date().toLocaleString("en-US", {timeZone: "Australia/Brisbane"});
console.log('AEST time: '+ (new Date(aestTime)).toISOString())

var asiaTime = new Date().toLocaleString("en-US", {timeZone: "Asia/Shanghai"});
console.log('Asia time: '+ (new Date(asiaTime)).toISOString())

var usaTime = new Date().toLocaleString("en-US", {timeZone: "America/New_York"});
console.log('USA time: '+ (new Date(usaTime)).toISOString())

var indiaTime = new Date().toLocaleString("en-US", {timeZone: "Asia/Kolkata"});
console.log('India time: '+ (new Date(indiaTime)).toISOString())

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString


1
আমি এর উত্তর পরিবর্তন করেছি, যেহেতু এটি কোনও লাইব্রেরি ব্যবহার না করে সঠিক এবং মানক পদ্ধতি।
রিজকি রামধন

5
এমডিএন ডকুমেন্টেশন পরিষ্কারভাবে বলেছে যে সমস্ত বাস্তবায়নে স্বীকৃত হওয়া কেবলমাত্র সময় অঞ্চলটি ইউটিসি U ( stackoverflow.com/questions/10087819/… ) আইই 11 এ [রান কোড স্নিপেট] বোতামটি ক্লিক করা একটি ত্রুটি তৈরি করে।
ভিভিয়ান নদী

1
যদি এই মুহূর্তে সমস্ত ব্রাউজারের জন্য কাজ করে এমন বাস্তবায়ন খুঁজছেন, তারা নীচে নিজের জবাব দিয়ে নীচের যে কোনও উত্তর চেষ্টা করতে পারেন ...
রিজকি রামধন

14
এই উত্তরটি সঠিকভাবে টাইম জোনটি toLocaleStringপ্রবাহিত করতে দেখায়, তবে এটি খুব ভুলভাবে সেই স্ট্রিংটিকে Dateকনস্ট্রাক্টরে ফিরে যেতে দেখায় । যে ঝামেলা চাইছে। তারিখের স্ট্রিং পার্সারের লোকেল নির্দিষ্ট ফর্ম্যাটগুলি গ্রহণ করার প্রয়োজন হয় না এবং ইনপুটটিকে স্থানীয় সময় অঞ্চলে মনে করা হয়। এটা করবেন না। প্রথম toLocalStringকলটি থেকে কেবল স্ট্রিং আউটপুট ব্যবহার করুন ।
ম্যাট জনসন-পিন্ট

4
@ ম্যাট জনসন তারপরে আপনি getHour () বা এই জাতীয় পদ্ধতি ব্যবহার করতে পারবেন না
আলি পাদিদা

131

জন্য moment.js ব্যবহারকারী, আপনি এখন ব্যবহার করতে পারেন মুহূর্ত-সময় অঞ্চল । এটি ব্যবহার করে আপনার ফাংশনটি দেখতে এরকম কিছু লাগবে:

function toTimeZone(time, zone) {
    var format = 'YYYY/MM/DD HH:mm:ss ZZ';
    return moment(time, format).tz(zone).format(format);
}

3
আমি কীভাবে নতুন টাইমজোন যুক্ত করব তা নিশ্চিত ছিলাম না, ডক্সটি আমাকে সহায়তা করেনি। আমি কেবল একজন প্রোগ্রামার, সময় বিশেষজ্ঞ নন!
পারজিফাল

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

2
এটি কি "রিটার্ন মুহুর্ত (সময়) .tz (জোন)। ফর্ম্যাট (ফর্ম্যাট) নয়!" ? আপনি আপনার কোডটিতে যা দিয়েছেন তাতে আমার "অবৈধ তারিখ" ত্রুটি রয়েছে।
তারেক

1
ব্রাউজারে মোমেন্ট.জেগুলি লোড করা সম্ভব নয়। খুব দুঃখজনক :(
ড্যানিল শেভলেভ

4
আপনি যদি টিজেড ডাটাবেসের একটি অনুলিপি সহ ব্রাউজারে 180K প্রেরণ সম্পর্কে খুশি না হন এবং পুরানো ব্রাউজারগুলিতে বর্তমান টাইমজোনটিতে অবক্ষয়ের সাথে বাঁচতে পারেন, তবে @ ল্যাম্বিনেটরের উত্তরটি ব্যবহার করে দেখুন Date.prototype.toLocaleString
পিটার ভি। মার্চ

92

নির্লজ্জভাবে এ থেকে চুরি: http://www.techrepublic.com/article/convert-the-local-time-to-another-time-zone-with-th- জাভাস্ক্রিপ্ট / 6016329

/** 
 * function to calculate local time
 * in a different city
 * given the city's UTC offset
 */
function calcTime(city, offset) {

    // create Date object for current location
    var d = new Date();

    // convert to msec
    // add local time zone offset
    // get UTC time in msec
    var utc = d.getTime() + (d.getTimezoneOffset() * 60000);

    // create new Date object for different city
    // using supplied offset
    var nd = new Date(utc + (3600000*offset));

    // return time as a string
    return "The local time in " + city + " is " + nd.toLocaleString();
}

এই ফাংশনটি একটি শহর / দেশের নাম এবং অফসেট মান প্রদান করে সময় অঞ্চল মান গণনা করতে দরকারী


4
সুন্দর .... তবে আমি মনে করি তিনি চান শহরের উত্তীর্ণের উপর ভিত্তি করে অফসেটটি তার সন্ধান করা উচিত।
ব্র্যান্ডন বুন

117
এটি দিবালোকের সঞ্চয়ী পরিবর্তনগুলি বিবেচনায় নেয় না।
রোবটব্যাগস

12
প্রশ্নের উত্তর দেয় না তবে আমার উত্তর দেয় (+1)
পুনরায় ইজারা। 85

সেই '3600000' আমাকে আক্ষরিক অর্থে হত্যা করেছে! ইনপুটটিতে tz কয়েক ঘন্টা দেওয়া উচিত! এবং, এটি বিয়োগ করা উচিত। সুতরাং, যদি আপনি পাস করেন: var d = নতুন তারিখ ক্যালকটাইম ('', d.getTimezoneOffset () / 60); এটি একই সময় ফিরে দেওয়া উচিত।
প্রবীণ

1
এই উত্তরটি গুরুতরভাবে পুরানো । বিভিন্ন অফসেটের জন্য ম্যানুয়ালি টাইমস্ট্যাম্প তৈরির আরও অনেক ভাল উপায়।
রবজি

89

সাফারি বাদে বেশিরভাগ ডেস্কটপ (মোবাইল নয়) ব্রাউজারগুলি আর্গুমেন্টের সাথে টোকলস্ট্রিং ফাংশন সমর্থন করে , পুরানো ব্রাউজারগুলি সাধারণত যুক্তি উপেক্ষা করে।

new Date().toLocaleString('en-US', { timeZone: 'Asia/Jakarta' })

4
Firefox এবং এজ :( ব্যর্থ
Sime Vidas

10
যেহেতু এটি এফএফ এবং আইই 11 + এ শক্তভাবে ব্যর্থ হয়, তাই অন্য একটি সমাধান খুঁজে পাওয়া দরকার।
jdavid.net

2
এজ এবং ক্রোমটি এটি পছন্দ করেছে :)
সুহেল মমতাজ আওয়ান

6
এটি এখন Chrome ক্রিম v59 এবং ফায়ারফক্স ডেস্কটপ v54 এবং অ্যান্ড্রয়েড v59 তে চোম এবং আইওএস 10.3 এ সাফারি 10 এ কাজ করেছে। এটি আই 10 তে কাজ করে নি। ডেট.প্রোটোটাইপ.টোলোকেলেস্ট্রিং () এর এমডিএন-এর বিবরণে এমন একটি toLocaleStringSupportsLocales()বাস্তবায়ন রয়েছে যা আপনাকে নির্ভরযোগ্যভাবে সমর্থনের জন্য পরীক্ষা করতে দেয়।
পিটার ভি। মার্চ

1
সাফল্যের সাথে node.js v8.7.0- এ পরীক্ষিত হয়েছে
হেইনরিচ

56

ঠিক আছে, খুঁজে পেয়েছি!

আমি টাইমজোন-জেএস ব্যবহার করছি । এই কোড:

var dt = new timezoneJS.Date("2012/04/10 10:10:30 +0000", 'Europe/London');
dt.setTimezone("Asia/Jakarta");

console.debug(dt); //return formatted date-time in asia/jakarta

90
আমাকে এর বিরুদ্ধে ভোট দিতে হবে, টাইমজোন-জেএস ডিএসটি সমর্থন করে না এবং এটি এর রিডমিমে বিজ্ঞাপন দেয় না যা এটি এটির জন্য অনুসন্ধান করা লোকদের জন্য একটি খারাপ পরামর্শ দেয় ip দেখুন: github.com/mde/imezone-js/issues/51 এবং অন্যান্য বেশ কয়েকটি সমস্যা যা দায়ের করা হয়েছে এবং এটি ঠিক হয়ে গেছে বলে মনে হয় না।

@ নুস হ্যাঁ, তবে ক্লায়েন্টের পার্শ্ব সময়সীম / তারিখ পরিচালনার জন্য সত্যিকার অর্থে কোনও সমাধান নেই ... jquery ui ডেটপিকার আমাকে এ কারণে পাগল করে চলেছে। চিয়ার্স
লুকাস

2
@ মারাবান্টা, মুহুর্তের টাইমজোন (ব্রায়ান ডি প্যালমার
ওয়েলডান 9

2
টাইমজোনজেএস ব্যবহার করবেন না, এটি ডিএসটি পরিবর্তনের চারপাশে বগড।
matf

17

আপনি যদি কোনও বড় লাইব্রেরি আমদানি করতে না চান তবে আপনি কেবল তারিখের অবজেক্টগুলিকে বিভিন্ন টাইম জোনে রূপান্তর করতে Intl.DateTime Format ব্যবহার করতে পারেন ।

// Specifying timeZone is what causes the conversion, the rest is just formatting
const options = {
  year: '2-digit', month: '2-digit', day: '2-digit',
  hour: '2-digit', minute: '2-digit', second: '2-digit',
  timeZone: 'Asia/Jakarta',
  timeZoneName: 'short'
}
const formater = new Intl.DateTimeFormat('sv-SE', options)
const startingDate = new Date("2012/04/10 10:10:30 +0000")

const dateInNewTimezone = formater.format(startingDate) 
console.log(dateInNewTimezone) // 12-04-10 17:10:30 GMT+7

অফসেট, দিবালোক সংরক্ষণ এবং অতীতে পরিবর্তনগুলি আপনার জন্য যত্ন নেওয়া হবে।


IE10 + টাইম জোনের জন্য ইন্টেল এপিআই সমর্থন করে না। moment.github.io/luxon/docs/manual/matrix.html
ক্লো

এটি আসলে সেরা উত্তর। toLocaleStringঅসামঞ্জস্য বাস্তবায়ন রয়েছে, এবং এটি IE11 থেকে কাজ করে।
dlsso

এফওয়াইআই: এটি আসলে উইন্ডোজ 8.1 এ আইই 11 এ কাজ করে না। আপনি যখন formatterবস্তুটি তৈরি করার চেষ্টা করবেন , আপনি পাবেন: `` 'বিকল্প সময়' এশিয়া / জাকার্তা '' টাইমজোন 'এর জন্য বৈধ ব্যাপ্তির বাইরে। প্রত্যাশিত: ['ইউটিসি'] `` `
ওয়েড্ডার্ম্যাটিক

বিন্যাস থেকে চূড়ান্ত ফলাফলকে আবার একটি ডেট অবজেক্টে রূপান্তর করার কোনও উপায় আছে কি?
এমডিং 5692

10

বুঝেছি !

প্রদর্শিত সার্ভারের তারিখ = সার্ভারের তারিখটি জোর করতে চেয়েছিল, স্থানীয় সেটিংস (ইউটিসি) তে কোনও ম্যাটার নেই।

আমার সার্ভারটি GMT-6 -> নতুন তারিখ ()। GetTimezoneOffset () = 360।

myTZO = 360;
myNewDate=new Date(myOldDateObj.getTime() + (60000*(myOldDateObj.getTimezoneOffset()-myTZO)));
alert(myNewDate);

2
যদিও এটি সঠিক নিষ্পাপ সময় দেখায়, আমার ওল্ডেটেবজ থেকে টাইমজোন তথ্য রাখা হয়। সুতরাং প্রকৃতপক্ষে এটি ভুল সময় (যখন আপনি সময় হিসাবে উদাহরণস্বরূপ সময় গ্রহণ করেন এবং সময় রাখার সময় নয়)।
gabn88

@ গ্যাবএন ৮৮: জাভাস্ক্রিপ্ট ব্যবহার করে আপনি সার্ভারের সময় পরিবর্তন করতে পারবেন না ... সার্ভারের সময় ঠিক করতে, অপারেটিং সিস্টেমের স্তরে এটি করুন।
সিড্রিক সাইমন

2
সার্ভারের সময় ঠিক করার দরকার নেই;) সার্ভারের সময়টি সর্বদা আমার জন্য ইউটিসি থাকে। তবে বিভিন্ন টাইমজোনগুলিতে আমার বিভিন্ন সংস্থা রয়েছে। এবং তাদের ডিভাইসগুলিতে সর্বদা তাদের সংগঠনটি কোথায় রয়েছে সেদিকেই সময় প্রদর্শন করা উচিত।
gabn88

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

5

আপনি সময় অঞ্চল নির্ধারণের জন্য ToLocaleString () পদ্ধতিতে ব্যবহার করতে পারেন।

new Date().toLocaleString('en-US', { timeZone: 'Indian/Christmas' })

ভারতের জন্য আপনি "ইন্ডিয়ান / ক্রিসমাস" ব্যবহার করতে পারেন এবং নীচে বিভিন্ন সময় অঞ্চল রয়েছে,

"Antarctica/Davis",
    "Asia/Bangkok",
    "Asia/Hovd",
    "Asia/Jakarta",
    "Asia/Phnom_Penh",
    "Asia/Pontianak",
    "Asia/Saigon",
    "Asia/Vientiane",
    "Etc/GMT-7",
    "Indian/Christmas"

আপনি টাইমজোনটি সেট করছেন না, বরং সেই সময় জোনে প্রকাশিত সময়ের সাথে একটি স্ট্রিং তৈরি করছেন। তারিখটি একই থাকে।
জেরার্ড ওনিল


4

আমি আপলোড করেছেন আপনি শুধু রূপান্তর সময়ের অঞ্চলগুলোকে করার প্রয়োজন হলে ছিনতাই-ডাউন সংস্করণ এর মুহূর্ত-সময় অঞ্চল মাত্র ন্যূনতমরূপে functionallity সঙ্গে। এটির ~ 1KB + ডেটা:

S.loadData({
    "zones": [
        "Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|11e6",
        "Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1GQg0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5",
    ],
    "links": [
        "Europe/Paris|Europe/Madrid",
    ]
});

let d = new Date();
console.log(S.tz(d, "Europe/Madrid").toLocaleString());
console.log(S.tz(d, "Australia/Sydney").toLocaleString());

2

বছর, মাস এবং দিনকে '-' চিহ্নগুলির সাথে পৃথক করে একটি 'টি' এবং এইচএইচ: মিমি: এসএস প্যাটার্নে সময়টি নির্ধারণ করুন, তারপরে স্ট্রিংয়ের শেষে +01: 00 অনুসারে (আমার ক্ষেত্রে ক্ষেত্রে সময় অঞ্চল +1)। তারপরে এই স্ট্রিংটি তারিখ নির্মাতার পক্ষে যুক্তি হিসাবে ব্যবহার করুন।

//desired format: 2001-02-04T08:16:32+01:00
dateAndTime = year+"-"+month+"-"+day+"T"+hour+":"+minutes+":00+01:00";

var date = new Date(dateAndTime );

2

আমার অবশ্যই লক্ষ্য করা উচিত যে আমি যে বাইরের লাইব্রেরিগুলি ব্যবহার করতে পারি সে সম্পর্কে আমি সীমাবদ্ধ। moment.js এবং টাইমজোন-জেএস আমার পক্ষে বিকল্প ছিল না।

আমার কাছে থাকা জেএস তারিখের অবজেক্টটি ইউটিসি-তে রয়েছে। একটি নির্দিষ্ট টাইমজোন (আমার ক্ষেত্রে 'আমেরিকা / শিকাগো') এ তারিখ থেকে আমার তারিখ এবং সময় পাওয়া দরকার।

 var currentUtcTime = new Date(); // This is in UTC

 // Converts the UTC time to a locale specific format, including adjusting for timezone.
 var currentDateTimeCentralTimeZone = new Date(currentUtcTime.toLocaleString('en-US', { timeZone: 'America/Chicago' }));

 console.log('currentUtcTime: ' + currentUtcTime.toLocaleDateString());
 console.log('currentUtcTime Hour: ' + currentUtcTime.getHours());
 console.log('currentUtcTime Minute: ' + currentUtcTime.getMinutes());
 console.log('currentDateTimeCentralTimeZone: ' +        currentDateTimeCentralTimeZone.toLocaleDateString());
 console.log('currentDateTimeCentralTimeZone Hour: ' + currentDateTimeCentralTimeZone.getHours());
 console.log('currentDateTimeCentralTimeZone Minute: ' + currentDateTimeCentralTimeZone.getMinutes());

ইউটিসি বর্তমানে 'আমেরিকা / শিকাগো' থেকে 6 ঘন্টা এগিয়ে রয়েছে। আউটপুট হল:

currentUtcTime: 11/25/2016
currentUtcTime Hour: 16
currentUtcTime Minute: 15

currentDateTimeCentralTimeZone: 11/25/2016
currentDateTimeCentralTimeZone Hour: 10
currentDateTimeCentralTimeZone Minute: 15

11
new Date();স্থানীয় সময় অঞ্চলটি ফিরে আসুন, ইউটিসি নয়
মিরকো

1
দস্তাবেজগুলি থেকে:If no arguments are provided, the constructor creates a JavaScript Date object for the current date and time according to system settings.
মিরকো

হুম। কিন্ডা বিভ্রান্ত। এটি একটি তারিখের সময় অঞ্চল পরিবর্তন করে না; বরং এটি পরিবর্তিত সময়ের সাথে একটি নতুন তারিখ তৈরি করে। এটা হবেToLocaleString কল থেকে তৈরি হওয়া স্ট্রিং থেকে আপনার পছন্দগুলি মানটি বের করতে নিয়মিত অভিব্যক্তিটি ব্যবহার আরও পরিষ্কার ।
জেরার্ড ওনিল

2

এখানে আমার কোড, এটি নিখুঁতভাবে কাজ করছে, আপনি নীচে ডেমো দিয়ে চেষ্টা করতে পারেন:

$(document).ready(function() {
   //EST
setInterval( function() {
var estTime = new Date();
 var currentDateTimeCentralTimeZone = new Date(estTime.toLocaleString('en-US', { timeZone: 'America/Chicago' }));
var seconds = currentDateTimeCentralTimeZone.getSeconds();
var minutes = currentDateTimeCentralTimeZone.getMinutes();
var hours =  currentDateTimeCentralTimeZone.getHours()+1;//new Date().getHours();
 var am_pm = currentDateTimeCentralTimeZone.getHours() >= 12 ? "PM" : "AM";

if (hours < 10){
     hours = "0" + hours;
}

if (minutes < 10){
     minutes = "0" + minutes;
}
if (seconds < 10){
     seconds = "0" + seconds;
}
    var mid='PM';
    if(hours==0){ //At 00 hours we need to show 12 am
    hours=12;
    }
    else if(hours>12)
    {
    hours=hours%12;
    mid='AM';
    }
    var x3 = hours+':'+minutes+':'+seconds +' '+am_pm
// Add a leading zero to seconds value
$("#sec").html(x3);
},1000);


});
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<p class="date_time"><strong id="sec"></strong></p>
</body>
</html>


স্ট্যাকওভারফ্লোতে আপনাকে স্বাগতম! আপনি এই কোডটি কীভাবে কাজ করে এবং এটি কী করে তার মতো আরও তথ্য সরবরাহ করতে পারেন? কীভাবে এটি সমস্যার সমাধান করে?
DarkSuniuM

আমার উপরের কোডটি হ'ল আপনার সময় অঞ্চলটি অন্য দেশের টাইমজোনকে আপডেট করা।
সাহিল কাপুর

আপনাকে আপনার এইচটিএমএল ফাইলে এইচটিএমএল লাগাতে হবে এবং উপরের jquery কোডটি ফুটারে থাকা দরকার। এটি আপনার জন্য ('এন-ইউএস', {টাইমজোন: 'আমেরিকা / শিকাগো' per) অনুসারে কাজ করবে আপনি যদি অন্য দেশগুলির টাইমজোন চান, তবে আপনাকে এই দুটি মান আপডেট করতে হবে ধন্যবাদ
সাহিল কাপুর

অপেক্ষা নেই। আমি সযত্নে না দেখে এটিকে উন্নত করেছি। আপনি কেন 1 যুক্ত করছেন currentDateTimeCentralTimeZone.getHours()? ছাড়া এটি যেমন seeking27 এর উত্তর কাজ করবে এবং একই stackoverflow.com/a/40809160/1404185
chetstone

1

তারিখ টাইমজোনকে ভারতে রূপান্তর করার জন্য আপনি এটিও চেষ্টা করতে পারেন:

var indianTimeZoneVal = new Date().toLocaleString('en-US', {timeZone: 'Asia/Kolkata'});
var indainDateObj = new Date(indianTimeZoneVal);
indainDateObj.setHours(indainDateObj.getHours() + 5);
indainDateObj.setMinutes(indainDateObj.getMinutes() + 30);
console.log(indainDateObj);

1
২ য় পদক্ষেপের পরে আমিই ভারতে সময় পাই ... তাহলে কেন আপনি এখনও এটিতে 5 এবং 1/2 ঘন্টা যোগ করছেন?
ব্যবহারকারী 3833732

এই পদ্ধতিটি ব্যবহার করার সময় আমি ক্রোমের সাথে লগ কনসোল করার সময় নরওয়েতে নিম্নলিখিতগুলি পাই: আসল: থু সেপ্টেম্বর 2018 2018 15:53:46 GMT + 0200 (সেন্ড্রেলিওরোপিস্ক স্মার্টড)। সংশোধিত: থু সেপ্টেম্বর 2018 2018 19:23:46 GMT + 0200 (সেন্ড্রেলিওরোপিস্ক স্মার্টড)। "সেন্ড্রেলিওরোপিস্ক সোমারটিড" অর্থ মধ্য ইউরোপীয় গ্রীষ্মকাল। আপনি যখন ভারতে গ্রীষ্মকালীন সময় প্রয়োজন, বা আপনি যখন ভারতে থাকবেন এবং ইউরোপের জন্য গ্রীষ্মকালীন সময় প্রয়োজন তখন এটি কার্যকর হয় কিনা তা নিশ্চিত নয়।
কেবম্যান

এর মতো সেটহাউসগুলি () ব্যবহার করে দিন, মাস, বছর স্থানান্তর হয় না, উদাহরণস্বরূপ 8 ই নিউ নিউ ডলে সকাল সাড়ে তিনটায় লন্ডনে সন্ধ্যা সাড়ে ১১ টা। তারপরে মাসের শেষ, বছর এবং লিপের দিন বিবেচনা করুন। তারিখে সেই গণিতটি করুন <<< স্থানীয়_টাইম = নতুন তারিখ (জুলু_টাইম.সেটটাইম () + 3600000 * স্টাড_টাইমজোন.টাইমজোন_ফ্যাক্টর - 60 * 60 * 1000); চলুন তারিখ_সেটর = স্থানীয়_কালীন.টোআইএসএসআর্টিং ()। স্লাইস (0, 10); চলুন সময়_রিস্ট = স্থানীয়_টাইম.টোআইএসএসআর্টিং ()। স্লাইস (11, -1); টাইমজোন_স্ট্রিট = std_timezone.Timezone_str; </ translation>
লিংকন র‌্যান্ডাল ম্যাকফারল্যান্ড

1

এই পৃষ্ঠা থেকে লিঙ্কগুলি সহ অনেকগুলি অনুসন্ধান করে আমি মুহুর্তের সময় অঞ্চল ব্যবহার করে এই দুর্দান্ত নিবন্ধটি পেয়েছি:

https://www.webniraj.com/2016/11/23/javascript-using-moment-js-to-display-dates-times-in-users-timezone/

এর সংক্ষিপ্তসার হিসাবে:

ব্যবহারকারীর টাইমজোন পান

var tz = moment.tz.guess();
console.info('Timezone: ' + tz);

আয় যেমন: টাইমজোন: ইউরোপ / লন্ডন

ডিফল্ট ব্যবহারকারী সময় অঞ্চল সেট করুন

moment.tz.setDefault(tz);

কাস্টম টাইমজোন সেট করুন

moment.tz.setDefault('America/Los_Angeles');

তারিখ / সময়কে স্থানীয় সময় অঞ্চলে রূপান্তর করুন, ধরে নেওয়া হবে আসল তারিখ / সময়টি ইউটিসিতে রয়েছে

moment.utc('2016-12-25 07:00').tz(tz).format('ddd, Do MMMM YYYY, h:mma');

রিটার্নস: সান, 25 শে ডিসেম্বর 2016, সকাল 7:00 টা

তারিখ / সময়কে এলএ সময়ে রূপান্তর করুন

moment.utc('2016-12-25 07:00').tz('America/Los_Angeles').format('ddd, Do MMMM YYYY, h:mma');

রিটার্নস: শনি, 24 ডিসেম্বর 2016, রাত 11: 00

এলএ সময় থেকে লন্ডনে রূপান্তর করুন

moment.tz('2016-12-25 07:00', 'America/Los_Angeles').tz('Europe/London').format( 'ddd, Do MMMM YYYY, h:mma' );

রিটার্নস: সান, 25 শে ডিসেম্বর 2016, বিকাল 3:00


1

আপনি https://www.npmjs.com/package/ctoc_timezone ব্যবহার করতে পারেন

এটি অনেক সাধারণ বাস্তবায়ন এবং বিন্যাস কাস্টমাইজেশন পেয়েছে।

টাইমজোনতে ফর্ম্যাট পরিবর্তন করা হচ্ছে:

CtoC.toTimeZone(new Date(),"EST","Do MMM YYYY hh:mm:ss #{EST}");

আউটপুট:

28th Feb 2013 19:00:00 EST

আপনি ডকটিতে একাধিক কার্যকারিতা সন্ধান করতে পারেন।


0

'টাইমজোনস.জসন' নামে একটি এনপিএম মডিউল রয়েছে আপনি এটির জন্য ব্যবহার করতে পারেন; এটিতে মূলত একটি জসন ফাইল থাকে যা দিবালোকের সঞ্চয় এবং অফসেট সম্পর্কিত তথ্য সম্বলিত সামগ্রী সহ ....

এশিয়া / জাকার্তার জন্য এটি এই বস্তুটি ফিরিয়ে দিতে সক্ষম হবে:

{
  "value": "SE Asia Standard Time",
  "abbr": "SAST",
  "offset": 7,
  "isdst": false,
  "text": "(UTC+07:00) Bangkok, Hanoi, Jakarta",
  "utc": [
    "Antarctica/Davis",
    "Asia/Bangkok",
    "Asia/Hovd",
    "Asia/Jakarta",
    "Asia/Phnom_Penh",
    "Asia/Pontianak",
    "Asia/Saigon",
    "Asia/Vientiane",
    "Etc/GMT-7",
    "Indian/Christmas"
  ]
}

আপনি এখানে পেতে পারেন:

https://github.com/dmfilipenko/timezones.json

https://www.npmjs.com/package/timezones.json

আশা করি এটি কার্যকর


0

জাভা 8 java.timeপ্যাকেজের সাথে পরিচিত লোকেরা বা joda-timeসম্ভবত ব্লকের নতুন বাচ্চাকে পছন্দ করবে: জেএস-জোডা লাইব্রেরি।

ইনস্টল করুন

npm install js-joda js-joda-timezone --save

উদাহরণ

<script src="node_modules/js-joda/dist/js-joda.js"></script>
<script src="node_modules/js-joda-timezone/dist/js-joda-timezone.js"></script>
<script>
var dateStr = '2012/04/10 10:10:30 +0000';
JSJoda.use(JSJodaTimezone);
var j = JSJoda;
// https://js-joda.github.io/js-joda/esdoc/class/src/format/DateTimeFormatter.js~DateTimeFormatter.html#static-method-of-pattern
var zonedDateTime = j.ZonedDateTime.parse(dateStr, j.DateTimeFormatter.ofPattern('yyyy/MM/dd HH:mm:ss xx'));
var adjustedZonedDateTime = zonedDateTime.withZoneSameInstant(j.ZoneId.of('America/New_York'));
console.log(zonedDateTime.toString(), '=>', adjustedZonedDateTime.toString());
// 2012-04-10T10:10:30Z => 2012-04-10T06:10:30-04:00[America/New_York]
</script>

সত্য জাভা প্রকৃতিতে, এটি বেশ ভার্জোজ লোল। তবে, একটি পোর্ট করা জাভা লাইব্রেরি হওয়ায়, বিশেষত তারা 1800'র পরীক্ষার কেসগুলি পোর্ট করে বিবেচনা করে, এটি সম্ভবত দুর্দান্তভাবেও নির্ভুলভাবে কাজ করে।

ক্রোনো ম্যানিপুলেশন শক্ত। এজন্য আরও অনেক লাইব্রেরি প্রান্তের ক্ষেত্রে বগি। মোমেন্ট.জেএস ঠিক সময় অঞ্চলগুলি পেয়েছে বলে মনে হচ্ছে, তবে আমি দেখেছি এমন অন্যান্য জেএস লাইবস timezone-jsবিশ্বাসযোগ্য বলে মনে হচ্ছে না।


0

আমি সম্প্রতি টাইপস্ক্রিপ্টে এটি করেছি:

// fromTimezone example : Europe/Paris, toTimezone example: Europe/London
private calcTime( fromTimezone: string, toTimezone: string, dateFromTimezone: Date ): Date {
  const dateToGetOffset = new Date( 2018, 5, 1, 12 );

  const fromTimeString = dateToGetOffset.toLocaleTimeString( "en-UK", { timeZone: fromTimezone, hour12: false } );
  const toTimeString = dateToGetOffset.toLocaleTimeString( "en-UK", { timeZone: toTimezone, hour12: false } );

  const fromTimeHours: number = parseInt( fromTimeString.substr( 0, 2 ), 10 );
  const toTimeHours: number = parseInt( toTimeString.substr( 0, 2 ), 10 );

  const offset: number = fromTimeHours - toTimeHours;

  // convert to msec
  // add local time zone offset
  // get UTC time in msec
  const dateFromTimezoneUTC = Date.UTC( dateFromTimezone.getUTCFullYear(),
    dateFromTimezone.getUTCMonth(),
    dateFromTimezone.getUTCDate(),
    dateFromTimezone.getUTCHours(),
    dateFromTimezone.getUTCMinutes(),
    dateFromTimezone.getUTCSeconds(),
  );

  // create new Date object for different city
  // using supplied offset
  const dateUTC = new Date( dateFromTimezoneUTC + ( 3600000 * offset ) );

  // return time as a string
  return dateUTC;
}

আমি "এন-ইউকে" ফর্ম্যাটটি ব্যবহার করি কারণ এটি একটি সাধারণ। "এন-ইউএস" হতে পারে বা যা কিছু কাজ করে।

যদি প্রথম আর্গুমেন্টটি আপনার লোকাল টাইমজোন এবং সেকেন্ডে হয় আপনার টার্গেট সময় অঞ্চল এটি সঠিক অফসেট সহ একটি তারিখ অবজেক্ট দেয়।


0

মোমেন্ট টাইমজোন ব্যবহার করতে আমার সমস্যা হচ্ছে । অন্য কেউ যদি একই সমস্যার মুখোমুখি হয় তবে আমি এই উত্তরটি যুক্ত করছি। সুতরাং আমার থেকে একটি ডেট স্ট্রিং 2018-06-14 13:51:00আসছে API। আমি জানি যে এটি সঞ্চিত আছেUTC তবে স্ট্রিংটি নিজের পক্ষে কথা বলবে না।

আমি মুহুর্তের টাইমজোনকে জানাতে পারি, এই তারিখটি কী সময় দিয়ে করা হয়েছে তা থেকে:

let uTCDatetime = momentTz.tz("2018-06-14 13:51:00", "UTC").format();
// If your datetime is from any other timezone then add that instead of "UTC"
// this actually makes the date as : 2018-06-14T13:51:00Z

এখন আমি এগুলি করে একটি নির্দিষ্ট সময় অঞ্চলে রূপান্তর করতে চাই:

let dateInMyTimeZone = momentTz.tz(uTCDatetime, "Asia/Kolkata").format("YYYY-MM-DD HH:mm:ss");
// now this results into: 2018-06-14 19:21:00, which is the corresponding date in my timezone.

0

কেবল আপনার ইচ্ছার দেশটির সময় অঞ্চল নির্ধারণ করুন এবং আপনি সহজেই এইচটিএমএল এ এটি প্রতিটি আপডেটের পরে সেটিন্টেভাল () ফাংশনটি ব্যবহার করে প্রদর্শন করতে পারেন। ফাংশন ফর্ম্যাটএএমপিএম () 12 ঘন্টা ফর্ম্যাট এবং এএম / পিএম সময় প্রদর্শন পরিচালনা করে।

$(document).ready(function(){
        var pakTime = new Date().toLocaleString("en-US", {timeZone: "Asia/Karachi"});
        pakTime = new Date(pakTime);

        var libyaTime = new Date().toLocaleString("en-US", {timeZone: "Africa/Tripoli"});
        libyaTime = new Date(libyaTime);



         document.getElementById("pak").innerHTML = "PAK  "+formatAMPM(pakTime);
         document.getElementById("ly").innerHTML = "LY   " +formatAMPM(libyaTime);

        setInterval(function(today) {
            var pakTime = new Date().toLocaleString("en-US", {timeZone: "Asia/Karachi"});
            pakTime = new Date(pakTime);

            var libyaTime = new Date().toLocaleString("en-US", {timeZone: "Africa/Tripoli"});
            libyaTime = new Date(libyaTime);


           document.getElementById("pak").innerHTML = "PAK  "+formatAMPM(pakTime);
           document.getElementById("ly").innerHTML = "LY  " +formatAMPM(libyaTime);

        },10000);

         function formatAMPM(date) {
            var hours = date.getHours();
            var minutes = date.getMinutes();
            var ampm = hours >= 12 ? 'pm' : 'am';
            hours = hours % 12;
            hours = hours ? hours : 12; // the hour '0' should be '12'
            minutes = minutes < 10 ? '0'+minutes : minutes;
            var strTime = hours + ':' + minutes + ' ' + ampm;
            return strTime;
        }


    });

-1

তারিখের অবজেক্টটিকে যে কোনও সময় জোনে রূপান্তর করতে আমি সহজ পদ্ধতিটি জানি না, তবে আপনি যদি এটিকে স্থানীয় সময় অঞ্চলে রূপান্তর করতে চান তবে আপনি কেবল এটি Date.prototype.getTime()মিলিসেকেন্ডের সংখ্যার সাথে রূপান্তর করতে পারেন এবং আবার ফিরে আসতে পারেন।

date = new Date('2016-05-24T13:07:20');
date = new Date(date.getTime());

উদাহরণস্বরূপ, date.getHours()এখন আপনি অস্ট্রিয়াতে (এবং এটি গ্রীষ্মের) মতো আমার 15পরিবর্তে ফিরে আসবেন 13

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


1
কেন এটিকে ভোট দেওয়া হয়েছিল? এটি এখন পর্যন্ত এটি করার সবচেয়ে সহজ এবং সর্বোত্তম উপায়। উপরের উত্তরগুলির বেশিরভাগ গ্রীষ্ম / শীতের সময় বিবেচনা করে না
মর্টেনসিকেল

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

-1

আপনার বর্তমান সময় অঞ্চলটির জন্য টাইম অঞ্চল অফসেট

date +%s -d '1 Jan 1970'

আমার GMT + 10 টাইমজোন (অস্ট্রেলিয়া) এর জন্য এটি ফিরে এসেছে -36000


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