নতুন তারিখ () ক্রোম এবং ফায়ারফক্সে আলাদাভাবে কাজ করে


94

আমি Dateজাভাস্ক্রিপ্ট দ্বারা তারিখের স্ট্রিংয়ে রূপান্তর করতে চাই , এই কোডটি ব্যবহার করুন:

var date = new Date('2013-02-27T17:00:00');
alert(date);

'2013-02-27T17:00:00' সার্ভার থেকে জেএসএন অবজেক্টে ইউটিসি সময়।

তবে উপরের কোডের ফলাফল ফায়ারফক্স এবং Chrome এর মধ্যে পৃথক:

ফায়ারফক্স ফিরে:

Wed Feb 27 2013 17:00:00 GMT+0700 (SE Asia Standard Time)

ক্রোম ফেরত:

Thu Feb 28 2013 00:00:00 GMT+0700 (SE Asia Standard Time) 

এটি 1 দিন আলাদা, সঠিক ফলাফলটি আমি আশা করব ক্রোমের ফলাফল।

ডেমো কোড: http://jsfiddle.net/xHtqa/2/

উভয় থেকে একই ফলাফল পেতে আমি কীভাবে এই সমস্যাটি সমাধান করতে পারি?


4
এটি কি একই কম্পিউটারে?
অ্যারন ডিজুল্লা

4
@ সন্দীপ মূল কথাটি হ'ল ক্রোম টাইমজোন অফসেট যোগ করে যখন ফায়ারফক্স না করে
ডিফল্ট লোকেল

4
: যদি আপনি এই প্রশ্ন দেখা @CuongLe আছে stackoverflow.com/questions/9062863/...
ডিফল্ট লোকেল

4
এটি Date {Wed Feb 27 2013 17:00:00 GMT+0000 (GMT)}উভয় ক্ষেত্রেই (লিনাক্স)।
মারকফুল

4
নিতপিকারের কোণ: J ইউটিসি সময় JSON ফর্ম্যাটে J - JSON ফর্ম্যাট? অবিকল, জেএসএন সম্পর্কে একটি সাধারণ অভিযোগ হ'ল এটি কোনও তারিখের বিন্যাসটি মোটেই সংজ্ঞায়িত করে না।
vlvaro González

উত্তর:


67

ইউটিসির জন্য সঠিক ফর্ম্যাটটি হবে 2013-02-27T17:00:00Z(জেড জুলু সময়ের জন্য)। Zসঠিক ইউটিসি ডেটটাইম স্ট্রিং পেতে উপস্থিত না হলে যোগ করুন ।


4
ধন্যবাদ এইটা কাজ করে. তবে একটি লগ কথা আছে, এটি ভবিষ্যতে অবচয় করা হবে !!! কোন আইডিয়া দয়া করে?
ডেবিরা

4
অনেক অনেক ধন্যবাদ, আমি এই সমস্যাটি নিয়ে দুদিন ধরে বসে আছি, তবে এই পোস্টটি সবকিছু সমাধান করেছে।
পিয়াল জর্জ

30

হ্যাঁ, দুর্ভাগ্যক্রমে তারিখ-পার্সিং অ্যালগরিদমগুলি বাস্তবায়ন-নির্ভর। এর স্পেসিফিকেশন থেকেDate.parse (যা ব্যবহার করে new Date):

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

Dateকনস্ট্রাক্টর স্থানীয় সময় অঞ্চল ব্যবহার না করার জন্য (সম্ভবত) টাইমজোন তথ্যের সাথে ডেটটাইম স্ট্রিং ব্যবহার করুন, যেমন "2013-02-27T17:00:00Z"। যাইহোক, প্রতিটি ব্রাউজারের দ্বারা নির্ভরযোগ্য এমন একটি ফর্ম্যাট খুঁজে পাওয়া শক্ত - আইএসও ফর্ম্যাটটি আই <8 দ্বারা স্বীকৃত নয় ( জাভাস্ক্রিপ্ট দেখুন: কোন ব্রাউজারগুলি তারিখ.পার্সের সাথে ISO-8601 তারিখের স্ট্রিংকে পার্সিং সমর্থন করে )। আরও ভাল, একটি ইউনিক্স টাইমস্ট্যাম্প ব্যবহার করুন, যেমন ইউনিক্স যুগের আগে থেকে মিলি সেকেন্ড , বা তার অংশগুলিতে স্ট্রিংটি ভেঙে ফেলার জন্য একটি নিয়মিত অভিব্যক্তি ব্যবহার করুন এবং তারপরে সেগুলি খাওয়ান Date.UTC


4
তবে অনুমান (15.9.1.15) আসলে বলেছে: "অনুপস্থিত সময় অঞ্চলটির অফসেটের মান" জেড "" - সুতরাং এটি বাস্তবায়ন নির্ভর হওয়া উচিত নয়
সিনিলাও

12
ঠিক আছে, সংশোধন। ES5.1 স্পেসে একটি ভুল বলে মনে হচ্ছে - উদ্দেশ্যটি ছিল ISO-8601 এর সাথে মেলে যেখানে জেড অনুপস্থিতির অর্থ স্থানীয় সময় (তাই ক্রোম ES5.1 এর সাথে মেলে, ফায়ারফক্স এবং IE ISO-8601 এর সাথে মেলে)
sinelaw

@ সিনলা: এই বিষয়টির আরও তদন্ত করার জন্য ধন্যবাদ। যাইহোক, অনুমানগুলি যা বলে তা নির্বিশেষে, [পুরানো] ব্রাউজারগুলি এখনও এটি
অন্যভাবে

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

4
@ কিংঅফ হাইপোক্রিটস — স্ট্রিং সহ ডেট কন্সট্রাক্টরকে ডেকে আনা কিছুটা অদ্ভুত বলে মনে করা হয় ডেট . পার্স ব্যবহার করার মতোই
রবজি

4

আমি এখানে একটি জিনিস পেয়েছি। মনে হয় নেটিভ ফায়ারফক্স ইন্সপেক্টর কনসোলে একটি বাগ থাকতে পারে: আমি যদি নেটিভ ইন্সপেক্টরটিতে "নতুন তারিখ ()" চালাই তবে এটি ভুল টাইমজোন, জিএমটি লোকেলের সাথে একটি তারিখ দেখায় তবে ফায়ারবগ এক্সটেনশন কনসোলে একই কমান্ড চালাচ্ছে, তারিখ দেখানো হয়েছে আমার সঠিক সময় অঞ্চল ব্যবহার (GMT-3: 00)।


-2

লক্ষ্য করা গেছে যে ফায়ারফক্স ক্রোমের মতো একই ফলাফল ফিরিয়ে দিচ্ছে না। তারিখের জন্য আপনি kendo.to স্ট্রিংয়ে যে ফর্ম্যাটটি ব্যবহার করছেন তা দেখে মনে হয় একটি পার্থক্য রয়েছে।

শেষ কনসোল ফলাফলটি আমার যা প্রয়োজন:

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


-3

Moment.js ব্যবহার করার চেষ্টা করুন। এটি খুব ভাল এবং একই ব্রাউজারে সমস্ত ব্রাউজারের সাথে যায়। অনেকগুলি ফর্ম্যাটিং বিকল্পের সাথে আসে। নতুন তারিখ ('তারিখ') এর পরিবর্তে মুহূর্ত ('তারিখ') ব্যবহার করুন format

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