কেন সত্যিকারের "কেবলমাত্র তারিখের" ডেটা টাইপ নেই?


24

আমি সত্যই "মাত্র একটি দিন" ডেটা সেটগুলির জন্য ডেটটাইম মানগুলি ব্যবহার করে খুব হাস্যকর হতাশ। জন্মদিনগুলি সর্বাধিক সাধারণ উদাহরণ, তবে এটি সর্বদা ব্যবসায়িক প্রয়োগগুলিতে আসে।

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

সময় সর্বদা একটি নির্দিষ্ট পয়েন্টের সাথে সম্পর্কিত। 4 পিএম 4 ঘন্টা পোস্ট মেরিডিয়ান বা দুপুর হয়। ট্রানজিটে সূর্যের সর্বোচ্চ পয়েন্টটি পর্যবেক্ষণযোগ্য এবং আমাদের একটি সমন্বিত সিস্টেম স্থাপনের অনুমতি দেয়। দুপুরের 3 ঘন্টা আগে (অ্যান্ট মেরিডিয়ান), দুপুরের 2 ঘন্টা পরে, 1 জানুয়ারী, 1970 থেকে 1441899402938 মিলি সেকেন্ড। কার্টেসিয়ান বিশ্বে উত্থিত লোকদের কাছে এটি দ্বিতীয় প্রকৃতি।

তবে আমাদের ক্যালেন্ডার ডেসকার্টেসকে পূর্বাভাস দেয়। আমার যুক্তিটি হ'ল এটি একটি গণনা হিসাবে আরও সঠিকভাবে ভাবা হয় যার উপরে একটি মডুলো ফাংশন প্রয়োগ করা হয়। সোমবার রবিবার অনুসরণ করে, এবং ততক্ষণ আপনি রবিবার শনিবার অনুসরণ করে না আসা পর্যন্ত। কোনও ধনাত্মক এবং নেতিবাচক নেই, এটি একটি মডুলাস বা পরম মান।

একইভাবে বছর পুনরাবৃত্তি। প্রতি ৩5৫ দিন (বা তাই) আমার জন্য বেশ কয়েকটি বিশেষ দিন থাকে: জন্মদিন, বার্ষিকী, বাচ্চাদের জন্মদিন ইত্যাদি Business ব্যবসায়িক সময়সূচী অ্যাপ্লিকেশনগুলিতে প্রতি সাত দিন, মাসের প্রথম মঙ্গলবার ইত্যাদির উদাহরণ রয়েছে are আমরা এটি একটি ভাসমান বিন্দুতে মানচিত্রটি তৈরি করতে পারি, এবং সত্যই বলেছি যে এটির উপরে ম্যাপিং করা সংখ্যাটি প্রচুর সমস্যার সমাধান করে যা সত্যই পুরানো পথটি কঠিন, তবে এর অর্থ এই নয় যে এটি করার একমাত্র উপায়।

তারিখগুলি সংরক্ষণের জন্য ডেটটাইমস ব্যবহার করার প্রকৃতির "একটি বৃত্তাকার ছিদ্রে বর্গক্ষেত্রের খোলা" সম্পর্কে সচেতনতা এবং উপলব্ধি আপনাকে আমার মতে আরও ভাল প্রোগ্রামার করে তোলে।

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


7
এটি আমার মনে হয় একটি আকর্ষণীয় প্রশ্ন। জন্মদিনের উদাহরণটি ধরুন, এটি কেবলমাত্র মানুষের মধ্যে সত্যই উপলব্ধি করে, আমি এক জায়গায় থাকি এবং প্রত্যেকে একই সময়ে, একধরনের পথে জেগে। যত তাড়াতাড়ি আপনার গাণিতিকভাবে এটি প্রকাশ করা প্রয়োজন এটি খুব জটিল হয়ে ওঠে। কাজের শিফট শুরু / শেষ সময় ইত্যাদির মতো একই জিনিস যেমন তারা 'সময়' হয় না আপনি যে টাইমজোনটিতে কাজ করছেন তাতে দিনের ঘন্টা '
ইভান

3
নোডটাইম (তারিখ ও সময়ের জন্য একটি সি # গ্রন্থাগার) এর এক ধরণের তারিখ রয়েছে।
কোডসইনচাউস

5
আপনার সময়গুলিকে ইউটিসি হিসাবে সংরক্ষণ করুন, কোনও তারিখ সমস্যা নেই, সময় অঞ্চলের সমস্যা নেই।
লরেন পেচটেল

3
"তবে Godশ্বর এটি হ্যাকের মতো মনে হচ্ছে এবং আমি এই সমস্যাটি নিয়ে জুনিয়র ডেভস থেকে চিরতরে বাগগুলি খুঁজে পাচ্ছি।" - কেন আপনি কেবল নিজের নিজস্ব তারিখের ক্লাস বা যা কিছু তৈরি করবেন না এবং এটিকে একটি দিন বলুন।
ব্র্যান্ডিন

5
@ মিশেল ব্ল্যাকবার্ন আমি গুরুতর আপনার ব্যাখ্যাটি হ'ল নিজস্ব ডেটা টাইপের পরিস্থিতিটি শোনায় যা ব্যবসায়ের নিয়ম কার্যকর করে (কেবলমাত্র তারিখ, উদাহরণস্বরূপ আপনি এটিকে "ডেটটাইম" হিসাবে অভ্যন্তরীণভাবে দুপুরে নির্ধারিত অংশের সাথে সংরক্ষণ করতে পারেন) তবে তারপরে কেবল আপনার যে অংশগুলি চান তা প্রকাশ করুন (মাস , দিন ইত্যাদি বছর / কোন বছর)।
ব্র্যান্ডিন

উত্তর:


15

সবার আগে, আসুন একটি জিনিস বের করা যাক: জন্মদিনগুলি একটি জিনিস, তারিখের জন্মের দিন । একটি জন্মদিন একটি বহিরাগত ডেটা টাইপ কারণ এটিতে কেবল ঘন্টা, মিনিট ইত্যাদির উপাদানই থাকে না তবে এতে বছরের উপাদানও থাকে না। আপনি যদি সত্যিই জন্মদিনের সাথে ডিল করতে চান তবে আমি আপনার নিজের ডেটা টাইপের উদ্ভাবনের পরামর্শ দেব যাতে এক মাস নম্বর এবং একটি দিনের সংখ্যা ছাড়া কিছুই থাকে না এবং এটি কোনও বিল্ট-ইন ডেট-টাইম ডেটা টাইপের সাথে সম্পর্কিত নয়।

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

আমি সংক্ষেপে উল্লেখ করতে পারি যে এটি সত্য নয় যে সমস্ত প্রোগ্রামিং ল্যাঙ্গুয়েজ কেবলমাত্র টেম্পোরাল ডেটা টাইপ দেয় যা একটি সময়ের উপাদান অন্তর্ভুক্ত করে। আমি আরডিবিএমএস এবং তার সম্পর্কিত এসকিউএল উপভাষায় কেবলমাত্র তারিখের ডেটা জুড়ে এসেছি। তবে এটি অপ্রাসঙ্গিক: এই তথ্য প্রকারগুলির অস্তিত্বের অর্থ এই নয় যে এগুলি রাখা ভাল are এবং আরডিবিএমএসের প্রতিনিধিত্ব সহ বিভ্রান্তিকর স্টোরেজটির দীর্ঘ ইতিহাস রয়েছে।

আপনি বুঝতে পারবেন যে এই মুহুর্তে সময়কে স্থানাঙ্ক হিসাবে উপলব্ধি করার মুহুর্তে কেবলমাত্র তারিখের ডেটা রাখাই কেন এটি খারাপ ধারণা। বেশিরভাগ মানুষের সময় কী তা সম্পর্কে একটি অস্পষ্ট ধারণা রয়েছে এবং এই ধারণাটি বছর, মাস এবং দিনগুলির মতো তীব্র সাংস্কৃতিক ধারণা ধারণ করে, এই ধারণাটি একচেটিয়াভাবে প্রতিনিধিত্বমূলক : এগুলি কেবলমাত্র একটি মানুষের কাছে সময় উপস্থাপনের জন্য এবং গ্রহণের জন্য দরকারী একটি মানব থেকে ইনপুট হিসাবে সময়। প্রকৃত সময়-প্রবেশের জিইউআই নিয়ন্ত্রণের নীচের যে কোনও স্তরে সময় হওয়া উচিত এবং সাধারণত সময় সময় সমন্বিত হিসাবে প্রতিনিধিত্ব করা হয়, যা কিছু উত্স থেকেই একক সংখ্যক সময় ইউনিট।

উদাহরণস্বরূপ, DateTimeমাইক্রোসফ্ট ডটনেটের ডেটা টাইপের টাইম ইউনিটটি 100 ন্যানোসেকেন্ড এবং সময়টির উত্স হল জানুয়ারি 1, 0001 সিআর মধ্যরাত, 12:00

আরকেনের আর একটি উদাহরণ, একচেটিয়াভাবে প্রতিনিধিত্বমূলক স্বরলিপি হ'ল ডিগ্রি ব্যবহার করে কোণ পরিমাপ, এক ডিগ্রীর মিনিট এবং এক সেকেন্ডের ডিগ্রি। অবশ্যই, কোনও দরকারী গণনা সম্পন্ন করার জন্য, আপনাকে কোনও অভ্যন্তরীণভাবে রেডিয়ান ব্যবহার করতে হবে, এবং যদি প্রয়োজন হয়, কোনও মানব ব্যবহারকারীর সাথে আলাপকালে ডিগ্রিতে রূপান্তর করতে হবে।

সুতরাং, পরিমাপের প্রকৃত প্রকৃতির সাথে কোনও পরিমাপের মানব-পঠনযোগ্য উপস্থাপনাটিকে বিভ্রান্ত করবেন না। প্রায়শই একটি পরিমাপ উপলব্ধি করার জন্য আদর্শ পদ্ধতি, যা পরিমাপের প্রকৃতির সাথে খুব ঘনিষ্ঠভাবে মিলিত হয়, সেই পরিমাপের মানব-পঠনযোগ্য উপস্থাপনা থেকে খুব আলাদা।

এই সমস্ত বিষয়গুলির আলোকে, কেবলমাত্র তারিখগুলি উপস্থাপন করে এমন একটি টেম্পোরাল ডেটা টাইপের জন্য আপনার অনুরোধটি একটি কৌণিক ডেটা টাইপের অনুরোধের অনুরূপ যা কেবলমাত্র কোনও বৃহত্তর নির্ভুলতা রোধ করে কেবলমাত্র ডিগ্রি উপস্থাপন করতে সক্ষম হবে। এই জাতীয় ডেটা প্রকারটি বেশ সীমাবদ্ধ এবং শেষ পর্যন্ত অকেজো হবে কারণ এর সাথে কোনও কার্যকর কাজ করার জন্য আপনাকে যে কোনও উপায়ে এটি রেডিয়ানে এবং এর থেকে রূপান্তর করতে হবে।

জন্ম-তারিখের সাথে আপনার সমস্যাটি হ'ল আপনার একটি অনর্থক সময় সমন্বয় রয়েছে: ব্যক্তিটি অবশ্যই একটি নির্দিষ্ট মুহুর্তে জন্মগ্রহণ করেছিলেন, তবে ঘন্টা এবং মিনিট হয় হয় হাসপাতাল দ্বারা রেকর্ড করা হয়নি, বা আমরা তা করি না তাদের সম্পর্কে যত্ন। তো, হয় সত্যিই ঘটছে আপনার তারিখ-এবং-সময় অফ জন্ম সময় তুল্য ত্রুটির একটি মার্জিন, একটি রয়েছে সহনশীলতা বা অনিশ্চয়তা যদি আপনি চান, এবং এটি সর্বোত্তম যেমন এটা বিবেচনা করা: ঠিক মাঝখানে এ লাগাতে হবে দিনের জন্য এবং একটি অন্তর্ভুক্ত +12 -12 ঘন্টা অনিশ্চয়তা বিবেচনা করুন। এবং এটি হ'ল দৃ solution়ভাবে সমাধান যা আপনি স্বজ্ঞাতভাবে পৌঁছেছেন।


4
এটি "দিনগুলি" এর ক্ষেত্রে সত্য নয় যা সময়ের চেয়েও পুরানো ধারণা। এগুলিকে সুনির্দিষ্টভাবে একটি গণনা বা একটি মডুলাস হিসাবে বিবেচনা করা হয়। রবিবার সোমবার, ইত্যাদি অনুসরণ করে আমরা রবিবার ফিরে না আসা পর্যন্ত শনিবার অনুসরণ করি follows আসলেই এটি আলাদা জিনিস।
মাইকেল ব্ল্যাকবার্ন

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

4
-1: সময়ের সমস্ত ব্যবহার সময় এক এক মুহূর্ত প্রতিনিধিত্ব করা হয় না। একটি জন্মদিন হ'ল গ্রেগরিয়ান ক্যালেন্ডারে এক মাস এবং দিন দ্বারা প্রতিনিধিত্ব করা আলাদা ধারণা। জিজ্ঞাসা করা বুদ্ধিমান হয় "এটি কি কেভিনের আজ জন্মদিন?" উত্তরটি অবস্থান নির্ভর। যদি আমি সিডনিতে থাকি তবে এটি আমার জন্মদিন হতে পারে তবে আমি যদি এর পরিবর্তে হনোলুলুতে থাকি তবে এটি কিছু ঘন্টা হত না।
কেভিন ক্লাইন

6
@ মাইকনাকিসের ফলাফলটি মাইক্রো্যাম্পগুলি হবে, আজেবাজে নয়। আরও গুরুত্বপূর্ণ বিষয়: আপনি যখন একটি দ্বিতীয় বা মিলিসেকেন্ডে বদলে একটি তারিখ ব্যবহার করেন, আপনি সাধারণত পুরো দিন বিষয়ে কথা বলছি - একটি সময় নির্দিষ্ট সময়ের - একটি নির্দিষ্ট সময় বদলে, এবং প্রসঙ্গ উপর নির্ভর করে এটি একটি পুনরাবৃত্ত ইভেন্ট হতে পারে।
কালেব

4
ওপি জন্মদিনের কথা বলছিল, যা হুবহু java.util.MonthDay দ্বারা উপস্থাপন করা হয়। জন্মদিন কোনও পরিমাপ নয়, এটি বারবার পুনরাবৃত্তি করে এমন কোনও দিনের মানুষের ধারণা। সময়ের প্রচুর মানবিক ধারণাগুলি রয়েছে যা সময়ে কোনও একক পয়েন্ট দ্বারা প্রতিনিধিত্ব করা হয় না।
কেভিন ক্লাইন

9

তারিখ এবং সময় প্রসঙ্গের উপর নির্ভর করে অনেকগুলি ভিন্ন জিনিস এবং সমস্ত ব্যবহারের কেসগুলি coverাকতে আপনার অনেকগুলি পৃথক প্রকারের প্রয়োজন।

DateTimeবিভিন্ন ভাষায় টাইপ বর্তমানে একটি সুনির্দিষ্ট বিন্দু ( "ক্ষণিক সময়") প্রতিনিধিত্ব করে। এর বাইরে আমাদের অনেকগুলি আপেক্ষিক বা "মানব" সময় এবং সময়সীমার ধারণা রয়েছে যেমন ক্যালেন্ডারের দিন, পুনরাবৃত্ত তারিখ, মাস, বছর ইত্যাদি যা অনেক ক্ষেত্রেই অস্পষ্ট এবং প্রসঙ্গ নির্ভর dependent এই ধরণেরগুলি সর্বজনীনভাবে কার্যকর নয় তবে ক্যালেন্ডার, সময়সূচী সরঞ্জাম এবং অন্যান্য অ্যাপ্লিকেশনগুলির মতো নির্দিষ্ট অ্যাপ্লিকেশন ডোমেনগুলিতে প্রয়োজনীয় যা সময়ের মানবিক ধারণার সাথে যোগাযোগ করে।

আপনি যদি কোনও ক্যালেন্ডার অ্যাপের মতো কিছু লিখছেন তবে আপনি অবশ্যই জোদা-সময়ের মতো লাইব্রেরি ব্যবহার করে উপকৃত হবেন যা সময়ের ধরণের আরও সমৃদ্ধ সেট সরবরাহ করে। উদাহরণস্বরূপ LocalDate, সময় ছাড়া একটি তারিখ। এটি DateTimeসময়ের সাথে শূন্যে সেট করা একটি সাধারণের তুলনায় বিভিন্ন শব্দার্থবিজ্ঞান রয়েছে , যেহেতু DateTimeএখনও স্থিরভাবে একটি নির্দিষ্ট পয়েন্ট নির্দেশ করে (নির্দিষ্ট সময় LocalDateঅঞ্চলে মধ্যরাত), যখন পুরো দিনটি নির্দেশ করে, এবং নির্দিষ্ট সময়সীমের সাথে আবদ্ধ হয় না। এর অর্থ হ'ল আপনি সরাসরি অন্যটিতে অনুবাদ করতে পারবেন না।

LocalDateএটি অবশ্যই DateTimeসময়সীমা বিবেচনায় নেওয়ার দরকারের চেয়ে সহজ কারণ, তবে অন্যান্য বিষয় সম্পর্কে আপনার সচেতন হওয়া উচিত, উদাহরণস্বরূপ যে আপনি যখন টাইমজোনটি অতিক্রম করছেন তখন বর্তমান তারিখটি আসলে পিছনের দিকে চলে যেতে পারে এবং একই সময়ে তাত্ক্ষণিকভাবে তাত্ক্ষণিক কারণ হতে পারে বিভিন্ন সময় অঞ্চলে বিভিন্ন তারিখের সাথে সম্পর্কিত correspond আপনি যদি নেটওয়ার্ক বা ওয়েব অ্যাপ্লিকেশনগুলিতে স্থানীয় তারিখগুলি ব্যবহার করছেন তবে আপনার এই সমস্যাগুলি সম্পর্কে খুব সতর্ক হওয়া উচিত। তারিখ থেকে সময়ের অংশটি সরিয়ে ফেললে সময় অঞ্চলগুলির মৌলিক সমস্যার সমাধান হয় না! এবং যদি আপনি historicalতিহাসিক তারিখগুলি এবং বিভিন্ন সংস্কৃতি বিবেচনায় রাখেন তবে এটি আরও জটিল হয়ে উঠবে, যেহেতু একই তারিখটি সময়ে সময়ে বন্যপ্রাণে বিভিন্ন ঘটনাগুলির সাথে সামঞ্জস্য হতে পারে বলে গ্রেগরিয়ান ক্যালেন্ডার বনাম জুলিয়ান বলে।

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


5

আমি সত্যই "মাত্র একটি দিন" ডেটা সেটগুলির জন্য ডেটটাইম মানগুলি ব্যবহার করে খুব হাস্যকর হতাশ। জন্মদিনগুলি সর্বাধিক সাধারণ উদাহরণ, তবে এটি সর্বদা ব্যবসায়িক প্রয়োগগুলিতে আসে।

এটি সম্ভবত কারণ ক্যালেন্ডার জটিল এবং এতগুলি বিভিন্ন উপায়ে ব্যবহার করা হয়েছে যে কোনও শ্রেণিটি সহজেই সাধারণ আকারে সনাক্ত করতে সক্ষম হয় নি যা অনেক ক্ষেত্রে কার্যকর হতে পারে।

প্রোগ্রামিং ভাষায় সাধারণত যে তারিখের টাইপ পাওয়া যায় তা কম্পিউটার সিস্টেমে লেনদেনের সঠিকভাবে ব্যবহার করতে ব্যবহার করা যেতে পারে। অন্যান্য ব্যবহারের ক্ষেত্রে কাস্টম লাইব্রেরির প্রয়োজন হয়।

এখানে ক্যালেন্ডার সম্পর্কিত তথ্যগুলির একটি সংক্ষিপ্ত তালিকা রয়েছে যা তাদের জটিলতা প্রদর্শন করে - তাদের বেশিরভাগই historicalতিহাসিক, সুতরাং আপনি যদি 1.1.1970-এর পরে তারিখগুলিতে মনোযোগ সীমাবদ্ধ করেন তবে আপনি এটি দ্বারা প্রভাবিত হবেন না। তবে আপনার অ্যাপ্লিকেশনটিতে যদি 19 শতকের শেষের দিকে ঘটে যাওয়া তারিখগুলি নিয়ে কাজ করা দরকার হয় তবে এই বিষয়গুলি গুরুত্বপূর্ণ। সম্ভাব্য ব্যবহারের ক্ষেত্রে হ'ল সকল প্রকারের booksতিহাসিক ডাটাবেস (বই, বংশবৃত্ত) কিন্তু বড় সংস্থা বা সংস্থার সম্পদ আজও ক্রিয়াকলাপে রয়েছে।

এই সমস্ত তথ্য জুলিয়ান সিগনোলস দ্বারা লিখিত ওক্যামেলের জন্য ক্যালেন্ডার লাইব্রেরিতে পাওয়া দুর্দান্ত FAQ থেকে উদ্ধৃত হয়েছে ।

  1. জুলিয়ান ক্যালেন্ডারটি খ্রিস্টপূর্ব ৪৫ সালে জুলিয়াস সিজারের দ্বারা প্রবর্তিত হয়েছিল। দেশগুলি গ্রেগরিয়ান ক্যালেন্ডারে (বিভাগ ২.২) পরিবর্তন করতে শুরু করার পরে, এটি 1500 এর দশক পর্যন্ত প্রচলিত ছিল। তবে কিছু দেশ (উদাহরণস্বরূপ, গ্রীস এবং রাশিয়া) 1900 এর দশকে এটি ব্যবহার করেছিল, এবং রাশিয়ার অর্থোডক্স গির্জা এখনও এটি ব্যবহার করে, অন্য কয়েকটি অর্থোডক্স গীর্জার মতোই।

  2. জুলিয়ান থেকে গ্রেগরিয়ান ক্যালেন্ডারে স্যুইচিং অভিন্নভাবে ঘটেনি এবং পরিবর্তনের বছর থেকে 10 থেকে 13 দিন বাদ দেওয়া হয়েছে। উদাহরণস্বরূপ ফ্রান্সে 9 ডিসেম্বর 1582 এর পরে 20 ডিসেম্বর 1582 এবং গ্রীসে 9 মার্চ 1924 এর পরে 23 মার্চ 1924 হয়েছিল।

  3. এমনকি আধুনিক যুগেও কয়েকটি বিভিন্ন উদ্ধৃত করার জন্য অনেকগুলি বিভিন্ন ক্যালেন্ডার ব্যবহার করা হয় (গ্রেগরিয়ান, অর্থোডক্স, ইসলামিক এবং চীনা), যা প্রত্যেকে বছর এবং বার্ষিকী বা তারিখ ধর্মীয় উদযাপন গণনা করার জন্য বিভিন্ন উপায়ে ব্যবহার করে।

এখন আপনি সাধারণ ব্যবসায়িক ক্রিয়াকলাপের জন্য কার্যকর অপারেশনগুলির সাথে বান্ডিলযুক্ত তারিখের আশা করছেন। আমি অনুমান করি যে সাধারণ ব্যবসায়িক ক্রিয়াকলাপের মতো কোনও জিনিস নেই। উদাহরণস্বরূপ, ফিনান্স ওয়ার্ল্ডে আমাদের গণনা করা দরকার:

  1. বছরের ভগ্নাংশ (যেমন "6 মাস" "0.5" "এর সাথে মিলে যায়), যা নির্দিষ্ট সময়ের জন্য loanণের প্রকৃত সুদের গণনা করার জন্য সুদের হারের সাথে একত্রে ব্যবহৃত হয়। এই ভগ্নাংশগুলি গণনা করার জন্য 6 থেকে 10 টি রেসিপি রয়েছে, প্রতিটি লিপ বছরের দৈর্ঘ্য পরিচালনা করার পদ্ধতিগুলির সাথে পৃথক হয়, ফেব্রুয়ারির শেষ দিন এবং এক মাসের সময়কাল সম্পর্কিত সময়কালের অবস্থান।

  2. তারিখ রোলিং, বার্ষিকী গণনা করার সময়, আমরা একটি ছুটির দিন থেকে একটি ব্যবসায়িক দিনে একটি বার্ষিকী স্থানান্তর করতে একটি ব্যবসায় ক্যালেন্ডার এবং একটি নিয়ম (6 টিরও বেশি বিধিগুলির একটি সেট থেকে নেওয়া) ব্যবহার করি।

অর্থ শিল্পে কাজ করা লোকদের জন্য, কোনও ক্যালেন্ডার ধরণের এই সমস্ত ফাংশন এবং নিয়মগুলি প্রয়োগ করে না তা অকেজো। সম্ভবত অন্যান্য অনেক শিল্পের ক্যালেন্ডারে কাস্টম গণনার জন্য প্রয়োজনীয় অন্যান্য ধরণের অভ্যাস এবং সম্মেলন রয়েছে।

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

আপনার যদি কোনও একক ক্যালেন্ডার দিবসের খোঁজ রাখতে হয়, তবে সবচেয়ে ভাল উপায় হ'ল সেই ক্যালেন্ডারের দিনটির জুলিয়ান দিনকে উপস্থাপন করে একটি বড় পূর্ণসংখ্যা ব্যবহার করা। জুলিয়ান দিন থেকে ক্যালেন্ডার দিবসে - বছর, মাস এবং ক্যালেন্ডারের সাথে বর্ণিত - রূপান্তর করার জন্য অ্যালগরিদমগুলি ব্যাপকভাবে পরিচিত এবং পুঙ্খানুপুঙ্খভাবে পরীক্ষিত হয়, যাতে আপনি এগুলিকে সহজেই আপনার প্রয়োগে প্রয়োগ করতে পারেন - এবং আপনার যে নিয়ম প্রাসঙ্গিক তা নির্ধারণ করুন your 29 শে ফেব্রুয়ারিতে ঘটে যাওয়া একটি ইভেন্টের বার্ষিকী গণনা করার ক্ষেত্রে case


2

আমি মনে করি যে মাইকের নকিস তার উত্তরে আমি যেভাবে সাধারণভাবে সময়কে পরিমাপ করা স্থানাঙ্ক এবং অন্য যে কোনও যোগাযোগ, সেই সময়ের সমন্বয়ের অনুমিত রাষ্ট্র বা অধ্যবসায় বলা কেবল সময়ের সমন্বয়ের একটি বিমূর্ত উপস্থাপনা বলে ব্যাখ্যা করার চেয়ে আরও ভাল কাজ করে।

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

আপাতদৃষ্টিতে এই সহজ প্রশ্নটি আসলেই কত জটিল হতে পারে তা আপনি দেখতে পারেন।

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

সময় আসলে একটি সমন্বয়কারী, তবে কেবলমাত্র তারিখ ছাড়াও অন্যান্য সময় সংবেদনশীল ডেটা বিবেচনা করুন যা এর জন্য প্রয়োজন হতে পারে:

সময়কাল: মিলিসেকেন্ডের একটি স্প্যান যা ঘটতে পারে যা নির্দিষ্ট সময় স্থানাঙ্ক নির্দিষ্ট না করে দীর্ঘ সময় বা সময়কে নির্দেশ করে। ব্যবহারের ক্ষেত্রে হতে পারে,

একজন ব্যবহারকারী হিসাবে, আমি চাই যে এই কাজটি প্রতি বুধবার মধ্যরাতের কাজ শেষ হওয়ার 15 সেকেন্ড পরে সম্পাদিত হবে।

বিরতি: দুটি নির্দিষ্ট সময় স্থানাঙ্কের মধ্যে সময়ের একটি ব্যাপ্তি। এমন একটি ব্যবহারের ক্ষেত্রে যেখানে আপনি অন্তর বিবেচনা করতে চাইতে পারেন।

একজন ব্যবহারকারী হিসাবে, আমাকে অবশ্যই মাসের প্রতিটি দিন নির্দিষ্ট সময়ের মধ্যে অন্তর্ভুক্ত দেখতে হবে।

আরেকটি দ্রুত পয়েন্ট আমি তৈরি করতে চেয়েছিলাম তা হ'ল আপনি সময় ভিত্তিক ডেটার জন্য ভাসমান পয়েন্ট নম্বর সম্পর্কে একটি মন্তব্য করেছিলেন এবং আমি এর বিরুদ্ধে পরামর্শ দিই। ভাসমান পয়েন্ট পাটিগণিত অনিবার্যভাবে গোলাকার ত্রুটির দিকে পরিচালিত করে যা আপনাকে সময়ের জন্য প্রয়োজনীয় হিসাবে যথাযথ পরিমাপ না দেয়।

সুতরাং উপসংহারে, এই সমস্ত তথ্য অনিবার্যভাবে নিম্নলিখিত নকশা বিবেচনার দিকে পরিচালিত করে:

  • নির্দিষ্ট নির্দিষ্ট পয়েন্ট বা সময়সীমা UTC বা এমন কিছু ডেটাটাইপকে অব্যাহত রাখতে হবে যেখানে প্রয়োজনীয় তথ্য সহজেই ইউটিসি-তে ফিরে বিমুগ্ধ করার জন্য পর্যাপ্ত তথ্য রয়েছে
  • ইউটিসি ফর্ম্যাট করতে অ্যাপ্লিকেশন যুক্তি লিখতে হবে বা প্রান্তিক ব্যবহারকারীদের জন্য আরও হজমযোগ্য এমন একটি প্রতিনিধিত্বমূলক ডেটা স্থিতিতে ইউটিসির একটি স্থানাঙ্কের সমন্বয় করা উচিত।
  • মিলসেকেন্ডে গুরুত্বপূর্ণ সময়সীমা অব্যাহত রাখতে হবে
  • সময় সম্পর্কিত কোনও ডেটা প্রদর্শনে স্থানীয় নির্দিষ্ট বা শেষ ব্যবহারকারীর পছন্দগুলি অতিরিক্ত ডেটা হিসাবে ধরে রাখতে হবে এবং প্রদর্শন বিকল্পের মতো আচরণ করা উচিত। (উদাঃ কিওসক এ, কেন্দ্রীয় সময় অঞ্চল, সামরিক সময় বিন্যাস, বা ব্যবহারকারী বি পছন্দসমূহ, স্ট্যান্ডার্ড সময় তেল আভিভ (GMT + 7: 00) সময় অঞ্চল, ইত্যাদি ...)
  • এফপি নম্বরগুলি এড়িয়ে চলুন

1
এর কোনটিই "অনিবার্য" নয়। এটি অনেকগুলি অ্যাপ্লিকেশনের জন্য সাধারণ হতে পারে তবে লার্জ হ্যাড্রন কলাইডার ন্যানোসেকেন্ড স্কেলের ইভেন্টগুলির সাথে সম্পর্কিত। সিস্টেমের সময়গুলি মাইক্রোসেকেন্ডে চলে গেছে কারণ মিলিসেকেন্ডগুলিতে পর্যাপ্ত নির্ভুলতা নেই। ক্যালেন্ডার অ্যাপ্লিকেশনগুলির একটি তারিখের ধারণা থাকা দরকার যা একটি স্থানীয় ক্যালেন্ডার দিবসে ঘটেছিল আপনি ইভেন্টটি তৈরি করেছেন একই সময় অঞ্চলে থাকুক বা না থাকুক।
অ্যালান শুটকো

1
@ অ্যালানশুতকো এবং হ্যাঁ যে "অতিরিক্ত ডেটা" দরকার তা হ'ল স্থানীয় সময় অঞ্চল এবং দিবসগুলির মতো জিনিস এবং অন্য যে কোনও গুরুত্বপূর্ণ ডেটা অবশ্যই ধরা উচিত। সময়সী বিন্দুটি আপনার অ্যালগরিদমের জন্য গুরুত্বপূর্ণ না হলেও এগুলি সমস্ত সময়ে বিলোপযুক্ত st ন্যানোসেকেন্ড এবং এমনকি মাইক্রোসেকেন্ড স্কেল পর্যন্ত আমার উত্তরটি ওয়েব এবং এলওবি টাইপ সফ্টওয়্যারটির দিকে আরও তীক্ষ্ণ। আমি সন্দেহ করি যে পছন্দের এলএইচসি ভাষা সি # বা জাভাস্ক্রিপ্ট।
ম্যাপেল_শ্যাফ্ট

1
মিলিসেকেন্ডগুলি পুনরাবৃত্তিযোগ্য শারীরিক প্রক্রিয়াগুলির জন্য দুর্দান্ত। মানুষের ক্রিয়াকলাপের জন্য, কখনও কখনও উপযুক্ত ইউনিট নামমাত্র দিন হয়, যেমন দিনের শেষে পাঠানো হয় তবে এটি তিন দিন পরে গন্তব্যে ব্যবহারের জন্য উপলব্ধ হবে।
কেভিন ক্লায়ান

অতীতে আমি সময়ের স্থানাঙ্কের জন্য 64৪-বিট ভাসমান পয়েন্ট সংখ্যাগুলি ব্যবহার করার বিষয়টি বিবেচনা করেছি এবং আরও গুরুত্বপূর্ণভাবে সময়ের ব্যবস্থার জন্য, কারণ এগুলি আপনাকে দুর্দান্ত নির্ভুলতার সাথে ক্ষুদ্র পরিমাণটি প্রকাশ করার অনুমতি দেয়, পাশাপাশি বিশাল পরিমাণে, যেখানে নির্ভুলতা হ্রাস আসলে কোন বিষয় নয় where । (সুতরাং 65৫ মিলিয়ন বছর আগে ডাইনোসররা মারা গেলে কী কয়েক বছর দেয় বা লাগে?) তাহলে, কেন আপনি বলছেন যে এগুলি এড়ানো উচিত?
মাইক নাকিস

মাইক, আমি মনে করি তার উদ্বেগ এফপি গণিতের সাথে অনিবার্যভাবে গোল হয় কারণ এটি দশমিক থেকে বাইনারি মানগুলিতে রূপান্তরিত হয়। উদাহরণস্বরূপ, বাইনারি এফপি নম্বর হিসাবে প্রকাশিত হয় যখন 0.3 পুনরাবৃত্তি দশমিক, এবং তাই সঠিকভাবে উপস্থাপন করা যায় না। আপনি যে ক্ষমতাটি হারিয়েছেন তা নয়, তবে আপনি নির্ভুলতাটি হারিয়েছেন।
মাইকেল ব্ল্যাকবার্ন

2

সংক্ষেপে, কারণ বেশিরভাগ কম্পিউটার ভিত্তিক টাইম টাইপগুলি সময় ও সময় অঞ্চল ইস্যুটি সঠিকভাবে পরিচালনা করার দিকে দৃষ্টি নিবদ্ধ করে।

2 টি প্রান্তের কেস রয়েছে যা সাধারণ পদ্ধতির দ্বারা ভালভাবে পরিবেশন করা হয় না। স্থানীয় সময় ব্যবহার করে দিবালোক সংরক্ষণের পরিবর্তনের অন্যদিকে থাকা একটি পয়েন্ট সেট করা যা পরে ইউটিসিতে একটি নিম্ন বিমূর্ত স্তর দ্বারা রূপান্তরিত হয় এবং তারপরে আপনাকে আপনার সভার জন্য 1 ঘন্টা প্রথম / দেরীতে পরিণত করে।

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

মধ্যাহ্নের সময় নির্ধারণের তারিখ নির্ধারণের বিষয়ে প্রশ্নের পরামর্শ, ইউটিসি কাজ করবে, সর্বত্র ALMOST। ইউটিসি অফসেটগুলি -12 থেকে +14 অবধি রয়েছে, তাই প্রশান্তিতে কয়েকটি জায়গা রয়েছে যেখানে এই পদ্ধতিটি ব্যর্থ হবে। আমি এই তথ্য টাইপগুলিকে yyyymmdd ফর্ম্যাটে স্ট্রিং হিসাবে বিবেচনা করি এবং যদি আমাকে দুটি তারিখের মধ্যে তুলনা গণনা করতে হয় তবে এটি স্ট্রিং তুলনা হিসাবে নিরাপদে করা যেতে পারে। ব-দ্বীপ তুলনা করার সময় (যেমন তারিখ এবং এখনকার মধ্যে বা তারা দশ বছরের মধ্যে কতক্ষণ পর্যন্ত পৌঁছায়) আপনাকে অবশ্যই নিশ্চিত করতে হবে যে সমস্ত তারিখ একই ইউটিসি অফসেটে তৈরি করা হয়েছে, এবং তারপরে কাজটি করার জন্য স্ট্যান্ডার্ড টাইম ফাংশনগুলি ব্যবহার করতে পারে।


3
" আমি yYYYMMDD ফর্ম্যাটে এই ডেটা ধরণের স্ট্রিং হিসাবে বিবেচনা করি এবং যদি আমাকে দুটি তারিখের মধ্যে তুলনা গণনা করতে হয় তবে এটি একটি স্ট্রিং তুলনা হিসাবে নিরাপদে করা যেতে পারে " "নিশ্চিত যে Dateএটি একটি ডেটাটাইপের মতো সবেমাত্র বহন করছে aString
রস প্যাটারসন

ঠিক যেমনটি আপনি বলেছেন, এটি একটি তারিখের স্ট্রিং উপস্থাপনা এবং মূল পোস্টারের বিপরীতে, ইউটিসি +13 টাইমজোন থাকার কারণে তারিখটি পরিবর্তন হয় না।
মাইকেল শ

2

কেন সত্যিকারের "কেবলমাত্র তারিখের" ডেটা টাইপ নেই?

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

ডেটটাইম মান সহ একটি তারিখ নির্দিষ্ট করার চেষ্টা করা অঞ্চল নির্দিষ্ট করার জন্য একটি পয়েন্ট ব্যবহার করার চেষ্টা করার মতো।আপনি এই কাজটি একটি সম্মেলন ব্যবহার করে করতে পারেন, যেমন "এই পয়েন্টটি 100 মিটার ব্যাসার্ধের সাথে একটি বৃত্তের কেন্দ্রকে উপস্থাপন করে" তবে সেখানে প্রচুর সমস্যা রয়েছে: প্রত্যেককে একই কনভেনশন ব্যবহার করা দরকার, আপনাকে একটি গুচ্ছ লিখতে হবে ভুল টাইপকে কম বেদনাদায়ক করে কাজ করার জন্য সমর্থনকারী কোড এবং এটির বেশ গ্যারান্টিযুক্ত যে কোনও এক সময় আপনার প্রচলিত ক্ষেত্রের চেয়ে বড় বা ছোট একটি অঞ্চল নির্দিষ্ট করতে হবে। সুতরাং এটি তারিখগুলি সহ: আপনি তারিখগুলি নির্দিষ্ট করার জন্য প্রচলিত সময় হিসাবে 'দুপুর' ব্যবহার করতে পারেন তবে আপনি সময় অঞ্চলগুলিতে চলে আসবেন কারণ লোকেরা ইউটিসির পরিবর্তে স্থানীয় সময়গুলিতে তারিখ নির্দিষ্ট করার প্রত্যাশা করে। এমনকি যদি আপনি কোনও তারিখ নির্দিষ্ট করার জন্য ডেটটাইম ব্যবহার করার সন্তোষজনক উপায় নিয়ে এসে থাকেন তবে এটি আপনার পরম তারিখ বা কোনও সম্পর্কিত কিনা তা জানতে আপনার আরও তথ্যের প্রয়োজন হবে: 4 ই জুলাই, 1776 বা প্রতি জুলাই 4? আপনি যদি অন্য কিছু পিরিয়ড ব্যবহার করে পুনরাবৃত্তি করতে চান? এবং ক্যালেন্ডারে সমস্ত ধরণের পাগল সমস্যা রয়েছে: কিছু মাস অন্যদের চেয়ে দীর্ঘ হয়, কিছু বছর অন্যদের চেয়ে দীর্ঘ হয়, কিছু দিন অন্যদের চেয়ে দীর্ঘ হয় এবং কিছু ক্যালেন্ডারের মধ্যে ফাঁক থাকে। আপনি কেবল পুরো দিনগুলির জন্য এই সমস্যাগুলি সমাধান করতে চাইবেন না, কারণ একই সমস্যাগুলি খুব কম সময়ের জন্য আসে: আপনি সম্ভবত এমন কোড লিখতে সক্ষম হতে চান যা "প্রতি 4 ঘন্টা পরে 1 টি বড়ি গ্রহণ করে" "হিসাবে" প্রতি তৃতীয় শুক্রবার গ্রুপ মিলিত হয়। "

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

অন্যদের নির্দিষ্ট আছে, হয় ভাষা এবং লাইব্রেরি যে তারিখগুলি জন্য ভাল সমর্থন প্রদান করে, এবং এটি প্রায়ই তাদের দেওয়া এটা বেশ কঠিন ঠিক ঠিক তারিখ-সম্পর্কিত কোড পাওয়ার জন্য ব্যবহার করার জন্য একটি ভাল ধারণা।


2
"একটি প্রকার প্রদান করা কঠিন যা তারিখগুলি ব্যবহৃত হয় এমন সমস্ত উপায়ে সম্বোধন করে।" সত্য, একারণে এটি করার জন্য একটি একক প্রকার সরবরাহ করার চেষ্টা করা এক ভয়ঙ্কর ধারণা। প্রথম জাভা প্রকাশগুলি কেবল java.util.Date সরবরাহ করেছিল এবং ফলাফলটি ছিল ভয়াবহ। তারপরে তারা একটি জটিল জাভা.ইটি.ল ক্যালেন্ডার হায়ারার্কি যুক্ত করেছিল এবং এটি আরও ভাল কিছু পায় নি।
কেভিন ক্লাইন

1
@ কেভিঙ্কলাইন সম্পূর্ণরূপে একমত ওপি কোনও ভাষা নির্দিষ্ট করে নি, তাই আমি সাধারনতার জন্য লক্ষ্য করছি।
কালেব

" একই কারণে, আমি মনে করি, ডেটটাইম মানগুলি ইউটিসিতে সাধারণত নির্দিষ্ট করা থাকে " ... ওহ, এটি কি সত্য ছিল? এটি ২০১৫, এবং লেখকের হোম টাইমজোন ব্যবহার করে এখনও প্রচুর কোড লেখা হচ্ছে :-(
রস প্যাটারসন

1
আমি সত্যিই ভাবছিলাম যে কেন তারিখগুলির আশেপাশে কোনও সাধারণভাবে গৃহীত কনভেনশন নেই। আপনার "কোনও অঞ্চলকে উপস্থাপনের জন্য একটি পয়েন্ট ব্যবহার করা" আমার হতাশাকে পুরোপুরি গুটিয়ে নিয়েছে।
মাইকেল ব্ল্যাকবার্ন

2

কেন সত্যিকারের "কেবলমাত্র তারিখের" ডেটা টাইপ নেই?

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


1

ক্যালেন্ডারিকাল ম্যানিপুলেশন কম্পিউটারের অন্যতম দরিদ্র-বোধগম্য বিষয়। বিষয়টিতে পুরো বই লেখা হয়েছে। @ মিশেল ব্ল্যাকবার্ন কেবলমাত্র তারিখের জন্য একটি ডেটাটাইপ জিজ্ঞাসা করা একেবারে সঠিক, যা পুনরায় ব্যাখ্যার সাপেক্ষে সময়রেখার কোনও বিন্দুতে সমাধান হয় না। .তিহাসিকভাবে, একটি তারিখের অর্থ সম্পর্কে বৈধ বিরোধ রয়েছে। এটি কতটা জটিল হতে পারে তা খুঁজে পাওয়ার জন্য গ্রেগরিয়ান ক্যালেন্ডার গ্রহণ করা ছাড়া আর কাউকে দেখতে হবে না। তদুপরি, পশ্চিম ইউরোপ এবং এর উপনিবেশগুলিতে ( যেমন , ব্রিটেন এবং ব্রিটিশ আমেরিকা 25 শে মার্চ থেকে শুরু হয়েছিল) এমনকি বছরগুলি সর্বদা 1 জানুয়ারি শুরু হয় নি ।


1
এটা ঠিক। আমার উত্তরে যে ক্যালেন্ডার FAQ আমি উদ্ধৃত করেছিলাম তা হল ক্ল্যান্ডার ম্যানিপুলেশনের জটিলতা এবং সূক্ষ্মতা 4 আবিষ্কার করার জন্য একটি দুর্দান্ত উত্স
মাইকেল লে বার্বিয়ার গ্রেনওয়াল্ড

-2

উত্তর মধ্যে:

ওয়েল, আমি সত্যই জানতে চাই কেন প্রায় প্রতিটি ভাষার কাছে কেবল এই জন্য একটি ডেটা টাইপ থাকে।

সর্বাধিক সাধারণ কারণ হতে পারে "কারণ এটি প্রয়োজনীয় নয়"। আপনি যদি এমন কোনও তারিখের সময় চান যা ঘণ্টা, মিনিট, সেকেন্ড ইত্যাদির জন্য চিন্তা করে না, তবে আপনি কেবল এটির মতো এটি শুরু করুন:

date = new DateTime(year, month, day, 0, 0, 0);

আপনি চাইলে ডেটটাইম নিজে বাড়িয়ে নিতে পারেন:

public class Date extends DateTime {
    ...
    public Date(int year, int month, int day) {
        this(year, month, day, 0, 0, 0);
    }
}

দ্রষ্টব্য: আমি ইচ্ছাকৃতভাবে ডিফল্ট সময় এবং সময় অঞ্চল উপেক্ষা করছি। আপনি তাদেরকে কী সেট করেছেন তা আসলেই কিছু যায় আসে না, যতক্ষণ না তারা সকল ক্ষেত্রে একই হয় Date। আপনি ইউটিসির জন্য একটি মামলা করতে পারেন। আপনার সার্ভারের যে টাইমজোন বসে আছে তা ব্যবহার করার জন্য আপনি একটি কেস করতে পারেন - উভয় উপায়েই মনে হয় না যে এটির মতো অসম্পূর্ণ মান উপস্থাপনের জন্য এটি গুরুত্বপূর্ণ Date। ডিফল্ট সময় একই - আপনি এটি 0 করতে পারেন, আপনি এটি দুপুর করতে পারেন। এটা কোন ব্যাপার না। যদি ফেসবুক আমাকে জন্মদিনের বিজ্ঞপ্তিটি 00:01 তে প্রেরণ করে তবে আমি জন্মগ্রহণ করেছি 23:59 আমি সত্যিই যত্ন করি না এবং তারা আমার 12 ঘণ্টারও বেশি ছুটি ছিল বলে আমি বিরক্ত হব না।

উপরেরটি জাভাতে রয়েছে তবে কোনও DateTimeএবং উত্তরাধিকারের সাথে কোনও ভাষায় একইভাবে কাজ করবে । জাভাতে আসলে এটি সমাধান করার অসংখ্য উপায় রয়েছে এবং উপরেরটিকে অবহেলা করা হয়েছে (তারা আপনাকে Calendarএখনই ব্যবহার করতে চায় )। কিন্তু অন্যদের মন্তব্য পোস্ট কিছু ভাষায় আসলে কি একটি প্রদান Dateবর্গ শুধু এই কারণে, সম্ভবতঃ।

সমস্ত সম্ভাবনায়, প্রতিটি Dateবাস্তবায়ন সম্ভবত ভাষার জন্য কেবল একটি মোড়ক DateTimeএবং এটি সময়কে অবিচ্ছিন্ন করে তোলে । অন্যথায় আপনার দুটি ডেট / ডেটটাইমসের মধ্যে দিনের সংখ্যা বা দুটি Dateসমান কিনা (২৯ শে ফেব্রুয়ারি এবং ১ লা মার্চ?) এর মতো সমস্যার সমাধান করতে আপনার ডুপ্লিকেট কোডের প্রয়োজন হবে । এই ধরণের জিনিসগুলি সাধারণত DateTimeক্লাসে সমাধান করা হয় । এটির জন্য একই কোডটি পুনরায় ব্যবহার করা বোধগম্য Date


4
-1: আপনি কেবল বছর + মাস + দিন চাইলে লোকালডেট ব্যবহার করুন। সেই উদ্দেশ্যে ডেটটাইম ব্যবহার করা বাগের দিকে নিয়ে যায় যখন অন্য কোনও প্রোগ্রামার ডেটটাইমটি দেখে এবং ধরে নেয় যে এটি একটি মুহুর্তের প্রতিনিধিত্ব করে।
কেভিন ক্লাইন

@ কেভিঙ্কলাইন আমি এটিকে প্রয়োজনীয় বলে মনে করি নি কারণ এই প্রশ্নটি ভাষা-অজ্ঞাত জ্ঞাত। আমি এটিকেও স্পষ্ট মনে করব যে "অবহেলিত" লেবেলযুক্ত কোড ব্যবহার করা আপনার নিজের-ঝুঁকির পরিস্থিতি। সবচেয়ে বড় কথা, আমি শুধুমাত্র ব্যবহৃত যেখানে একটি ভাষা যে কিছু একটি উদাহরণ হিসাবে আপনি একটি দৃশ্যকল্প করতে পারি না নেই একটি আছে LocalDate, বা Dateটাইপ শ্রেণী এবং আপনি 'রোল-আপনার-নিজের' করতে হবে।
শাজ

1
সময় সম্পর্কে ব্যবসায়ের বিধি জড়িত স্পষ্ট সংক্ষিপ্ত এবং সঠিক কোডের জন্য "এটি প্রয়োজনীয়" (শারীরিক সময়ের বিপরীতে)। যদি লাইব্রেরি নামমাত্র সময়ের জন্য প্রকার সরবরাহ না করে তবে প্রোগ্রামারকে তাদের উদ্ভাবন করা প্রয়োজন হবে এবং এটি করার উপায় "ডেটটাইম" দিয়ে শুরু হয় না।
কেভিন ক্লায়ান

@ কেভিঙ্কলাইন আমি কোডটি কীভাবে কম স্পষ্ট বা সংক্ষিপ্ত হবে তা দেখছি না। প্রোগ্রামারের দৃষ্টিভঙ্গি new Date(2000, 1, 1);এবং এর মধ্যে পার্থক্য কী new Date(2000, 1, 1);? আপনি বলতে পারবেন কোনটির নীচে খালি ঘন্টা, মিনিট এবং সেকেন্ড রয়েছে? যদি আপনি অতিরিক্ত ফাংশনগুলি (সেটমিনিটস () এর মতো দেখানোর বিষয়ে উদ্বিগ্ন হন তবে আপনি এটির উত্তরাধিকার সূত্রে বদলে Dateমোড়ানোর পথে যেতে পারেন DateTimeএবং তারপরে আপনি কেবল সেটইয়ার, সেটমোনথ, সেটডে ইত্যাদি প্রকাশ করেন এবং এটি অবশ্যই কম নয় it's আপনি যে লাইব্রেরির ডেটটাইম ব্যবহার করছেন তার চেয়ে সঠিক।
Shaz

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