উত্তর:
ইউটিসি তারিখ দিয়ে শুরু করার সর্বাধিক বোকামি উপায় হ'ল একটি নতুন Date
অবজেক্ট তৈরি করা এবং এটি ব্যবহার করাsetUTC…
এটি আপনার পছন্দ অনুযায়ী তারিখ / সময় নির্ধারণের পদ্ধতিগুলি ।
তারপরে বিভিন্ন toLocale…String
পদ্ধতি স্থানীয়ভাবে আউটপুট সরবরাহ করবে।
// This would come from the server.
// Also, this whole block could probably be made into an mktime function.
// All very bare here for quick grasping.
d = new Date();
d.setUTCFullYear(2004);
d.setUTCMonth(1);
d.setUTCDate(29);
d.setUTCHours(2);
d.setUTCMinutes(45);
d.setUTCSeconds(26);
console.log(d); // -> Sat Feb 28 2004 23:45:26 GMT-0300 (BRT)
console.log(d.toLocaleString()); // -> Sat Feb 28 23:45:26 2004
console.log(d.toLocaleDateString()); // -> 02/28/2004
console.log(d.toLocaleTimeString()); // -> 23:45:26
var d = new Date(Date.UTC(2004,1,29,2,45,26));
toLocaleString()
ফাংশনগুলিতে ব্যবহারকারীর লোকেলকে বিবেচনা করে না ।
এই প্রশ্নটি বেশ পুরানো, সুতরাং moment.js সেই সময়ে উপস্থিত ছিল না, তবে নতুন প্রকল্পগুলির জন্য এটি এর মতো কাজগুলি অনেক সহজ করে দেয়।
ইউটিসি থেকে আপনার তারিখের স্ট্রিংটি নিম্নরূপে পার্স করা ভাল ( সমস্ত ব্রাউজারে সামঞ্জস্যপূর্ণ ফলাফল পেতে সার্ভারে একটি আইএসও -8601 সামঞ্জস্যপূর্ণ স্ট্রিং তৈরি করুন):
var m = moment("2013-02-08T09:30:26Z");
এখন কেবলমাত্র m
আপনার অ্যাপ্লিকেশনে ব্যবহার করুন, মুহুর্ত.জেস ডিসপ্লে অপারেশনের জন্য স্থানীয় টাইমজোনকে ডিফল্ট করে। আছে তারিখ এবং সময় মান ফরম্যাট করতে নানাভাবে বা এর অংশ বের করে।
আপনি এমনকি ব্যবহারকারী লোকেলের মধ্যে একটি মুহুর্তের অবজেক্টটি এটির মতো বিন্যাস করতে পারেন:
m.format('LLL') // Returns "February 8 2013 8:30 AM" on en-us
একটি মুহুর্ত.জেএস অবজেক্টকে আলাদা টাইমজোনে রূপান্তর করতে (যেমন স্থানীয় বা ইউটিসি না উভয়ই নয়) আপনার মুহুর্তের জন্য টাইমজোন এক্সটেনশন প্রয়োজন । এই পৃষ্ঠায় কিছু উদাহরণ রয়েছে, এটি ব্যবহার করা বেশ সহজ।
For old projects, just use jQuery
আপনি new Date().getTimezoneOffset()/60
সময় অঞ্চল জন্য ব্যবহার করতে পারেন । toLocaleString()
ব্যবহারকারীর লোকেল ব্যবহার করে একটি তারিখ প্রদর্শন করার জন্য একটি পদ্ধতিও রয়েছে।
পুরো তালিকাটি এখানে: তারিখের সাথে কাজ করা
toLocaleString
?
একবার আপনার তারিখের অবজেক্টটি তৈরি হয়ে গেলে, রূপান্তরটির জন্য এখানে একটি স্নিপেট রয়েছে:
ফাংশনটি একটি ইউটিসি ফর্ম্যাটেড তারিখ অবজেক্ট এবং ফর্ম্যাট স্ট্রিং নেয়।
আপনার একটি Date.strftime
প্রোটোটাইপ লাগবে ।
function UTCToLocalTimeString(d, format) {
if (timeOffsetInHours == null) {
timeOffsetInHours = (new Date().getTimezoneOffset()/60) * (-1);
}
d.setHours(d.getHours() + timeOffsetInHours);
return d.strftime(format);
}
getTimezoneOffset()/60
ভগ্নাংশ আসতে পারে (: 30 5.5 ফিরে আসবে যেমন ভারত +05 অফসেট)। দশমিকগুলি কাটা হয়। অন্যথায়, ঘন্টা নির্ধারণ করা অন্যান্য মানগুলি আপডেট করে (ঘন্টাগুলিকে 48 এ সেট করে এবং কী ঘটে তা দেখুন)।
উপরে বর্ণিত প্রতিটি সম্পত্তি রূপান্তর করার বাইরে জেএসে স্থানীয় তারিখের সময় বিন্যাস করার জন্য কোনও সহজ এবং ক্রস প্ল্যাটফর্ম উপায় নেই।
স্থানীয় ওয়াইওয়াইওয়াই-এমএম-ডিডি পেতে আমি এখানে একটি দ্রুত হ্যাক ব্যবহার করি। দ্রষ্টব্য যে এটি একটি হ্যাক, কারণ চূড়ান্ত তারিখটিতে সঠিক সময় অঞ্চল আর থাকবে না (তাই আপনাকে টাইমজোনটি উপেক্ষা করতে হবে)। আমার যদি আরও কিছু প্রয়োজন হয় তবে আমি moment.js ব্যবহার করি।
var d = new Date();
d = new Date(d.getTime() - d.getTimezoneOffset() * 60000)
var yyyymmdd = t.toISOString().slice(0,0);
// 2017-05-09T08:24:26.581Z (but this is not UTC)
D.getTimezoneOffset () টাইম অঞ্চলটি অফসেটটি কয়েক মিনিটের মধ্যে ফেরত দেয় এবং d.getTime () এমএসে থাকে, সুতরাং x 60,000।
বিগত প্রকল্পগুলিতে আমি যা ব্যবহার করেছি তা এখানে:
var myDate = new Date();
var tzo = (myDate.getTimezoneOffset()/60)*(-1);
//get server date value here, the parseInvariant is from MS Ajax, you would need to do something similar on your own
myDate = new Date.parseInvariant('<%=DataCurrentDate%>', 'yyyyMMdd hh:mm:ss');
myDate.setHours(myDate.getHours() + tzo);
//here you would have to get a handle to your span / div to set. again, I'm using MS Ajax's $get
var dateSpn = $get('dataDate');
dateSpn.innerHTML = myDate.localeFormat('F');
getTimezoneOffset()/60
প্রায়শই দশমিক মান ফিরে আসবে। এটি বিশেষত ১৯০০ সালের তারিখের জন্য সত্য যেখানে অনেক জায়গাতেই মিনিট এবং সেকেন্ডে অফসেট ছিল। এছাড়াও, জাভাস্ক্রিপ্ট তারিখগুলি এখন historicalতিহাসিক অফসেটগুলি সমর্থন করার জন্য প্রয়োজনীয়। যেমন 1890 সালে মস্কোর অফসেটটি ছিল +2: 30: 17। দেখুন ব্রাউজার, সময় অঞ্চল, ক্রোম 67 ত্রুটি ।
দ্য .getTimezoneOffset()
পদ্ধতি সময় অঞ্চল জিএমটি / ইউটিসি সময় অঞ্চল থেকে মিনিট, কাউন্টিং "পশ্চিমদিকে" এ অফসেট রিপোর্ট, একটি অফসেট মান এক সাধারণভাবে অভ্যস্ত হয় কি নেতিবাচক যে ফলে। (উদাহরণস্বরূপ, নিউ ইয়র্কের সময়টি +240 মিনিট বা +4 ঘন্টা হবে বলে জানানো হবে)
কয়েক ঘন্টা মধ্যে একটি সাধারণ সময়-অঞ্চল অফসেট পেতে, আপনি ব্যবহার করতে হবে:
var timeOffsetInHours = -(new Date()).getTimezoneOffset()/60
গুরুত্বপূর্ণ বিশদ:
নোট করুন যে দিবালোকের সঞ্চয়ের সময়টি ফলাফলের সাথে সজ্জিত হয় - সুতরাং এই পদ্ধতিটি আপনাকে যা দেয় তা সত্যই সময়ের অফসেট - প্রকৃত ভৌগলিক সময়-অঞ্চল অফসেট নয়।
পিএইচপি কোড থেকে তারিখের সাথে আমি এই জাতীয় কিছু ব্যবহার করেছি ..
function getLocalDate(php_date) {
var dt = new Date(php_date);
var minutes = dt.getTimezoneOffset();
dt = new Date(dt.getTime() + minutes*60000);
return dt;
}
আমরা এটিকে এভাবে কল করতে পারি
var localdateObj = getLocalDate('2015-09-25T02:57:46');
আমি এখন পর্যন্ত উত্তরগুলি মিশ্রিত করেছি এবং এটিতে যুক্ত করছি, কারণ ব্যবহারকারীর স্থানীয় সময় অঞ্চল বিন্যাসে ডিবি থেকে তারিখের সময়ের স্ট্রিংটি প্রদর্শন করতে আমাকে এগুলি সমস্ত পড়তে এবং অতিরিক্তভাবে তদন্ত করতে হয়েছিল।
ডেটটাইম স্ট্রিংটি পাইথন / জ্যাঙ্গো ডিবি ফর্ম্যাটে আসে: 2016-12-05T15: 12: 24.215Z
জাভাস্ক্রিপ্টে ব্রাউজার ভাষার নির্ভরযোগ্য সনাক্তকরণ সমস্ত ব্রাউজারে কাজ করছে বলে মনে হচ্ছে না ( ব্রাউজারের ভাষা পছন্দ সনাক্তকরণের জন্য জাভাস্ক্রিপ্ট দেখুন ), তাই আমি সার্ভার থেকে ব্রাউজারের ভাষা পাই।
পাইথন / জাঙ্গো: প্রসঙ্গের প্যারামিটার হিসাবে অনুরোধ ব্রাউজারের ভাষা প্রেরণ করুন:
language = request.META.get('HTTP_ACCEPT_LANGUAGE')
return render(request, 'cssexy/index.html', { "language": language })
এইচটিএমএল: এটি একটি লুকানো ইনপুটটিতে লিখুন:
<input type="hidden" id="browserlanguage" value={{ language }}/>
জাভাস্ক্রিপ্ট: লুকানো ইনপুট এর মান পান যেমন এন-জিবি, এন-ইউএস; কিউ = 0.8, এন; কি = 0.6 / এবং তারপরে তালিকার প্রথম ভাষাটি কেবল প্রতিস্থাপন এবং নিয়মিত এক্সপ্রেশনের মাধ্যমে গ্রহণ করুন
const browserlanguage = document.getElementById("browserlanguage").value;
var defaultlang = browserlanguage.replace(/(\w{2}\-\w{2}),.*/, "$1");
জাভাস্ক্রিপ্ট: ডেটটাইমে রূপান্তর করুন এবং এটি ফর্ম্যাট করুন:
var options = { hour: "2-digit", minute: "2-digit" };
var dt = (new Date(str)).toLocaleDateString(defaultlang, options);
দেখুন: https://developer.mozilla.org/en/docs/Web/JavaScript/ উল্লেখ / গ্লোবাল_অবজেক্টস / তারিখ / ToLocaleDateString
ফলাফলটি (ব্রাউজারের ভাষা এন-জিবি): 05/12/2016, 14:58
// new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]])
var serverDate = new Date(2018, 5, 30, 19, 13, 15); // just any date that comes from server
var serverDateStr = serverDate.toLocaleString("en-US", {
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
second: 'numeric'
})
var userDate = new Date(serverDateStr + " UTC");
var locale = window.navigator.userLanguage || window.navigator.language;
var clientDateStr = userDate.toLocaleString(locale, {
year: 'numeric',
month: 'numeric',
day: 'numeric'
});
var clientDateTimeStr = userDate.toLocaleString(locale, {
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
second: 'numeric'
});
console.log("Server UTC date: " + serverDateStr);
console.log("User's local date: " + clientDateStr);
console.log("User's local date&time: " + clientDateTimeStr);
options
আমি যে সর্বোত্তম সমাধানটি পেয়েছি তা হ'ল [সময় প্রদর্শন = "এলএলএল" ডেটটাইম = "ইউটিসি সময়" /] ট্যাগ তৈরি করা এবং এটি ব্যবহার করার সময় জাভাস্ক্রিপ্ট (জ্যাকোয়ারি) ব্যবহার করে এটি ব্যবহারকারীর সময়ের সাথে সম্পর্কিত display
http://momentjs.com/ Moment.js
সময়টি সুন্দরভাবে প্রদর্শন করবে।
getTimeZoneOffset () এবং toLocaleString মৌলিক তারিখ কাজের জন্য ভালো, কিন্তু আপনি বাস্তব সময় অঞ্চল সমর্থন, এ বর্ণন প্রয়োজন হলে MDE এর TimeZone.js ।
এই প্রশ্নের উত্তরে আরও কয়েকটি বিকল্প রয়েছে discussed
তারিখটিকে স্থানীয় তারিখে রূপান্তর করতে লোকালডেটস্ট্রিং () পদ্ধতিতে ব্যবহার করুন।
var date = (new Date(str)).toLocaleDateString(defaultlang, options);
স্থানীয় সময়কে রূপান্তর করতে লোকালটাইম স্ট্রিং () পদ্ধতিতে ব্যবহার করুন।
var time = (new Date(str)).toLocaleTimeString(defaultlang, options);
কীভাবে লোকেল করবেন তা জানেন না, তবে জাভাস্ক্রিপ্টটি ক্লায়েন্ট সাইড প্রযুক্তি।
usersLocalTime = new Date();
এতে ক্লায়েন্টের সময় এবং তারিখ থাকবে (যেমনটি তাদের ব্রাউজার দ্বারা প্রকাশিত, এবং এক্সটেনশনের মাধ্যমে তারা যে কম্পিউটারে বসেছেন)। প্রতিক্রিয়াতে সার্ভারের সময় অন্তর্ভুক্ত করা এবং অফসেট অনুমান করার জন্য কিছু সাধারণ গণিত করা তুচ্ছ হওয়া উচিত।
toLocateDateString()
এমন কিছু প্রত্যাবর্তন করবে যা দেখতে 'রবিবার, 12 জানুয়ারী, ২০১৪' এর মতো দেখাচ্ছে ..