দুর্ভাগ্যক্রমে এর জন্য কোনও দ্রুত ঠিক করার দরকার নেই। কোনও অ্যাপ্লিকেশনটির আন্তর্জাতিকীকরণ প্রথম নকশা আলোচনার অংশ হওয়া উচিত, কারণ এটি সত্যই তারিখ / সময় তুলনা এবং আউটপুট বিন্যাস সহ বিভিন্ন ক্ষেত্রের অনেকগুলি মূল অংশে চলে যায়।
যাইহোক, এটি সঠিকভাবে করলে ট্র্যাক পেতে, এটা সময় অঞ্চল তথ্য সংরক্ষণ অপরিহার্য এর সময়ের সাথে সাথে । অন্য কথায়, নিরূপক যে তারিখ / সময় 20130407 14:50
হয় অর্থহীন ছাড়া (ক) সময় অঞ্চল এর সাম্প্রতিক UTC অফসেট সহ (নোট 1) , অথবা (খ) নিশ্চিত সকল যুক্তিকে এইসব মান প্রথম ধর্মান্তরিত ঢোকাতে একটি নির্দিষ্ট সংশোধন অফসেট ( সম্ভবত 0)। এই জিনিসগুলির মধ্যে দুটি ছাড়া, প্রদত্ত দুটি সময়ের মান অপ্রতুল এবং ডেটাটি দূষিত । (পরের পদ্ধতিটি আগুন দিয়ে খেলছে (দ্রষ্টব্য 2) , উপায় হয় না))
এসকিউএল সার্ভার ২০০++ এ আপনি datetimeoffset
ডেটা টাইপ ব্যবহার করে সরাসরি সময়ের সাথে অফসেটটি সঞ্চয় করতে পারেন । (সম্পূর্ণতার জন্য, ২০০৫ এবং তার আগে, আমি তত্কালীন ইউটিসি অফসেট মান (মিনিটের মধ্যে) সঞ্চয় করতে একটি দ্বিতীয় কলাম যুক্ত করব))
এটি একটি ডেস্কটপ-টাইপ অ্যাপ্লিকেশনটির জন্য সহজ করে তোলে, কারণ এই প্ল্যাটফর্মগুলিতে সাধারণত কোনও তারিখ / সময় + সময় অঞ্চলকে স্থানীয় সময়ে স্বয়ংক্রিয়ভাবে রূপান্তর করতে ব্যবস্থা থাকে এবং তারপরে আউটপুটটির জন্য বিন্যাস করতে হবে, সমস্ত ব্যবহারকারীর আঞ্চলিক সেটিংসের ভিত্তিতে।
ওয়েবের জন্য, যা অন্তর্নিহিত সংযোগ বিচ্ছিন্ন আর্কিটেকচার, এমনকি ব্যাক-এন্ড ডেটা সঠিকভাবে সেট আপ করা সত্ত্বেও, এটি আরও জটিল কারণ রূপান্তরকরণ এবং / অথবা ফর্ম্যাটিং করতে সক্ষম হতে আপনার ক্লায়েন্ট সম্পর্কে তথ্য প্রয়োজন। এটি সাধারণত ব্যবহারকারী অগ্রাধিকার সেটিংসের মাধ্যমে করা হয় (অ্যাপ্লিকেশন রূপান্তর করে / আউটপুটের আগে জিনিসগুলি ফর্ম্যাট করে), বা কেবল একই স্থির ফর্ম্যাট এবং প্রত্যেকের জন্য অফসেট টাইম জোন (যা স্ট্যাক এক্সচেঞ্জ প্ল্যাটফর্ম বর্তমানে করছে তা) সহ জিনিসগুলি দেখায়।
আপনি দেখতে পারেন কীভাবে যদি ব্যাক-এন্ড ডেটা সঠিকভাবে সেট আপ না করা হয় তবে খুব তাড়াতাড়ি এটি জটিল এবং হ্যাকি হয়ে যাচ্ছে। আমি path সমস্ত পাথের কোনও নিচে যাওয়ার পরামর্শ দিচ্ছি না কারণ আপনি কেবল আরও সমস্যাটি শেষ করবেন the
নোট 1:
একটি টাইমজোনের ইউটিসি অফসেটটি স্থির নয়: দিবালোকের সঞ্চয়গুলি বিবেচনা করুন যেখানে কোনও জোনটির ইউটিসি অফসেট এক ঘণ্টার চেয়ে কম বা বিয়োগে পরিবর্তিত হয়। এছাড়াও জোনগুলির দিবালোক সঞ্চয় তারিখগুলি নিয়মিতভাবে পরিবর্তিত হয়। সুতরাং datetimeoffset
(বা একটি সংমিশ্রণ local time
এবং UTC offset at that time
) ব্যবহারের ফলে সর্বাধিক তথ্য পুনরুদ্ধারের ফলাফল।
নোট 2:
এটি ডেটা ইনপুট নিয়ন্ত্রণের বিষয়ে। আগত মানগুলিকে বৈধতা দেওয়ার জন্য কোনও বোকামি-প্রমাণের উপায় নেই তবে, এমন একটি সাধারণ মান প্রয়োগ করা ভাল যা গণনা জড়িত না। যদি কোনও সর্বজনীন এপিআই কোনও অফসেট অন্তর্ভুক্ত এমন কোনও ডেটা ধরণের প্রত্যাশা করে, তবে সেই প্রয়োজনীয়তা কলারের কাছে পরিষ্কার হবে will
যদি এটি না হয়, কলকারীকে ডকুমেন্টেশনের উপর নির্ভর করতে হবে (যদি তারা এটি পড়েন), বা গণনাটি ভুলভাবে করা হয়, ইত্যাদি an অথবা এমনকি এখানে পৃথক সার্ভারে কেবল ওয়েব / ডাটাবেস))
যাইহোক অফসেট সংরক্ষণ করে একটি পাথর দিয়ে দুটি পাখি মারা যায়; এবং যদিও এখন এটি প্রয়োজন হয় না , এটি প্রয়োজন পরে পরে সম্ভাব্যতা উপলব্ধ করে তোলে। সত্য যে এটি আরও সঞ্চয়স্থান গ্রহণ করে তবে আমার মনে হয় এটি বাণিজ্য বন্ধের পক্ষে মূল্যবান কারণ ডেটা যদি এটি প্রথম স্থানে রেকর্ড করা না হয় তবে এটি হারিয়ে যায়।