জোনেডেটটাইম এবং অফসেটডেটটাইমের মধ্যে পার্থক্য কী?


155

আমি ডকুমেন্টেশনটি পড়েছি, তবে যখন আমি একটি বা অন্যটি ব্যবহার করা উচিত তখনও আমি তা পেতে পারি না:

ডকুমেন্টেশন অনুসারে OffsetDateTimeডাটাবেসে তারিখ লেখার সময় ব্যবহার করা উচিত, তবে আমি তা পাই না।


4
মূলত ZonedDateTimeএকটিতে আমি যা পড়ি তা থেকে ডিএসটি স্যুইচিং ইত্যাদি সহ টাইম অঞ্চলগুলি সম্পর্কিত তথ্য রয়েছে।
fge

উত্তর:


187

প্রশ্ন: জাভা 8 জোনেডেটটাইম এবং অফসেটডেটটাইমের মধ্যে পার্থক্য কী?

জাভাদোকরা এটি বলেছেন:

" OffsetDateTime, ZonedDateTimeএবং Instantসমস্ত ন্যানোসেকেন্ডের নির্ভুলতার জন্য সময়রেখায় একটি তাত্ক্ষণিক স্টোর InstantOffsetDateTime তাত্ক্ষণিক ইউটিসি / গ্রীনিচ, যা স্থানীয় তারিখ-সময় প্রাপ্ত করা করার অনুমতি দেয় থেকে অফসেট। যোগ ZonedDateTimeপূর্ণকালীন যোগ -জোন বিধি। "

সূত্র: https://docs.oracle.com/javase/8/docs/api/java/time/OffsetDateTime.html

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

সহজভাবে স্থিত:

সময় অঞ্চল = ( অফসেট থেকে-ইউটিসি + বিধি-বিধিবিধানের জন্য)


প্রশ্ন: ডকুমেন্টেশন অনুযায়ী OffsetDateTime ডাটাবেসে তারিখ লেখার সময় ব্যবহার করা উচিত, তবে আমি তা পাই না।

স্থানীয় সময় অফসেট সহ তারিখগুলি সর্বদা সময়ে একই তাত্ক্ষণিক প্রতিনিধিত্ব করে এবং তাই স্থিতিশীল ক্রম রয়েছে। বিপরীতে, পূর্ণ সময় অঞ্চল তথ্য সহ খেজুর অর্থ সম্পর্কিত সময় অঞ্চলগুলির জন্য বিধিগুলির সামঞ্জস্যের মুখে অস্থির। (এবং এটি ঘটে; যেমন ভবিষ্যতে তারিখ-সময়ের মানগুলির জন্য)) সুতরাং আপনি যদি সংরক্ষণ এবং তারপরে কোনও পুনরুদ্ধার করেন ZonedDateTimeতবে বাস্তবায়নের ক্ষেত্রে সমস্যা রয়েছে:

  • এটি গণিত অফসেট সংরক্ষণ করতে পারে ... এবং পুনরুদ্ধার করা অবজেক্টটির পরে একটি অফসেট থাকতে পারে যা জোন-আইডির জন্য বর্তমান নিয়মের সাথে সঙ্গতিপূর্ণ নয়।

  • এটি গণিত অফসেটটি বাতিল করতে পারে ... এবং পুনরুদ্ধারকৃত অবজেক্টটি তার পরে সঞ্চিত একের চেয়ে পরম / সর্বজনীন টাইমলাইনে একটি পৃথক পয়েন্ট উপস্থাপন করে।

আপনি যদি জাভা অবজেক্ট সিরিয়ালাইজেশন ব্যবহার করেন তবে জাভা 9 বাস্তবায়ন প্রথম পন্থা নেয়। এটি হ্যান্ডেল করার পক্ষে এটি "আরও সঠিক" উপায়, তবে এটি ডকুমেন্টেড বলে মনে হয় না। (জেডিবিসি ড্রাইভার এবং ওআরএম বাইন্ডিং সম্ভবতঃ একই রকম সিদ্ধান্ত নিয়েছে, এবং আশা করি এটি সঠিকভাবে পাচ্ছে।)

তবে আপনি যদি এমন কোনও অ্যাপ্লিকেশন লিখছেন যা ম্যানুয়ালি তারিখ / সময় মানগুলি সঞ্চয় করে বা যা নির্ভর করে java.sql.DateTime , তবে জোন-আইডির জটিলতাগুলি মোকাবেলা করা ... সম্ভবত কিছু এড়ানো উচিত। সুতরাং পরামর্শ।

নোট করুন যে সময়গুলির সাথে যার অর্থ / অর্ডারিং অস্থিতিশীল তা কোনও অ্যাপ্লিকেশনের জন্য সমস্যাযুক্ত হতে পারে । এবং যেহেতু জোন নিয়মে পরিবর্তনগুলি একটি প্রান্তের মামলা, তাই অপ্রত্যাশিত সময়ে সমস্যাগুলি উত্থাপনযোগ্য।


এ (সম্ভাব্য) পরামর্শের দ্বিতীয় কারণটি ZonedDateTimeহ'ল নির্দিষ্ট পয়েন্টগুলিতে একটি নির্মাণ অস্পষ্ট। উদাহরণস্বরূপ আপনি যখন "ঘড়িগুলি পিছনে রাখছেন" সময়কালে স্থানীয় সময় এবং একটি অঞ্চল-আইডি সংমিশ্রণ আপনাকে দুটি পৃথক অফসেট দিতে পারে। প্রতিশ্রুতি ZonedDateTimeনিয়মিতভাবে অন্যটিকে বেছে নেবে ... তবে এটি সর্বদা সঠিক পছন্দ নয়।

এখন, কোনও অ্যাপ্লিকেশনগুলির জন্য সমস্যা হতে পারে ZonedDateTimeযা সেভাবে মানগুলি তৈরি করে। কারও দৃষ্টিকোণ থেকে একটি এন্টারপ্রাইজ অ্যাপ্লিকেশন তৈরি করা তখন একটি বড় সমস্যা হয় যখন (সম্ভবত ভুল) ZonedDateTimeমানগুলি স্থির থাকে এবং পরে ব্যবহৃত হয়।

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