কেবল সি # তে তারিখের জন্য একটি প্রকার - কেন তারিখের ধরণ নেই?


110

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

এই সমস্যার মানক পদ্ধতির কী কী? অবশ্যই আমি এই প্রথম সম্মুখীন হয় না? Dateসি # তে কোন শ্রেণি নেই কেন ?

ডেটটাইমে কোনও স্ট্রাক্ট এবং সম্ভবত কিছু এক্সটেনশনমেডস ব্যবহার করে এবং সম্ভবত কিছু অপারেটর যেমন == এবং <,> প্রয়োগ করছেন কারও কি সুন্দর বাস্তবায়ন রয়েছে?


4
আমি যখন স্পষ্ট, স্পষ্ট শব্দার্থবিজ্ঞান বুঝতে চাইছি তখন কোন নির্দিষ্ট সমস্যাগুলি DateTimeতৈরি করে?
জেফ স্টার্নল

16
1 পদ্ধতিটির শুরুতে আমার ঘন্টাগুলি সরিয়ে ফেলতে হবে তা মনে রাখা দরকার। 2 এটি ভালভাবে যোগাযোগ করে না যে এটি কেবল তারিখগুলিতে কাজ করে। এটি গুরুত্বপূর্ণ উদাহরণস্বরূপ যখন ডিবি থেকে স্ট্রোক করা এবং লোড করার সময় যেখানে একটি সরু টাইপ যথেষ্ট। প্রোগ্রামিং হ'ল কম্পিউটার নয় এমন লোকের জন্য আলাপ
কার্লো ভি ড্যাঙ্গো

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

4
পরে অনুরূপ প্রশ্ন স্ট্যাকওভারফ্লো.com / প্রশ্নস / 67677177১০/২ , এবং জন স্কিটি বলেছে যে একটি তারিখ থাকা উচিত।
গুডেয়ে

9
একটি তারিখ কেবলমাত্র ডেটা টাইপ ডেটটাইমের সাথে একটি পূর্ণসংখ্যার ডেটা দশমিক হিসাবে হয়। যারা তর্ক করেন আমাদের কোনও তারিখের প্রয়োজন নেই কারণ আপনি কেবল সময়ের অংশটি ফেলে দিতে পারেন বলে আমাদের অনুরূপের দরকার নেই কারণ আমরা দশমিক অংশটি ফেলে দিতে পারি। আমাদের বিশ্বের একটি তারিখের ধারণা রয়েছে যা একটি সময় অন্তর্ভুক্ত করে না। 5 মার্চ 5 মার্চ 00:00:00 নয়।
অস্পষ্ট

উত্তর:


57

আমাকে এই ক্লাসিক প্রশ্নটিতে একটি আপডেট যুক্ত করার অনুমতি দিন:

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

  • ডেট-কেবলমাত্র প্রকারটি কোরফেক্স্লাব প্রকল্পের Dateমাধ্যমে .NET কোরের প্রস্তাবিত সংযোজন । আপনি প্যাকেজটিতে এটি একটি প্রকারের সাথে এবং বিদ্যমান ধরণের কয়েকটি এক্সটেনশন পদ্ধতিতে পাবেন।System.TimeTimeOfDay

আমি এই সমস্যাটি উল্লেখযোগ্যভাবে অধ্যয়ন করেছি, তাই আমি এই ধরণের প্রয়োজনীয়তার জন্য বেশ কয়েকটি কারণও ভাগ করে নেব:

  1. কেবলমাত্র একটি তারিখ এবং মধ্যরাতের মানের তারিখের মধ্যে যৌক্তিক তাত্পর্য রয়েছে।

    • না যে স্থানীয় দিন হয়েছে যে সময় অঞ্চলে একটি মধ্যরাত্রি। উদাহরণ: ব্রাজিলের স্প্রিং-ফরোয়ার্ড দিবালোক সংরক্ষণের সময় সঞ্চয়ের সময় 11:59:59 থেকে 01:00:00 এ সময়টিকে সরিয়ে দেয়।

    • একটি তারিখ-সময় সর্বদা দিনের মধ্যে একটি নির্দিষ্ট সময়কে বোঝায়, যখন একটি তারিখ কেবল দিনের শুরু, দিনের শেষে বা দিনের পুরো ব্যাপ্তিকে বোঝায় ।

  2. সময় অঞ্চলগুলি খুব যত্ন সহকারে পর্যবেক্ষণ না করা হলে একটি তারিখের সাথে একটি সময় সংযুক্তি দিয়ে মানটি একটি পরিবেশ থেকে অন্য পরিবেশে স্থানান্তরিত হওয়ার সাথে সাথে তারিখ পরিবর্তনের দিকে নিয়ে যেতে পারে । এটি সাধারণত জাভাস্ক্রিপ্টে ঘটে থাকে (যার Dateঅবজেক্টটি আসলেই একটি তারিখ + সময় হয়) তবে সহজেই। নেট, অথবা সিরিয়ালায়নে ডেটা জাভাস্ক্রিপ্ট এবং .NET এর মধ্যে পাস হওয়ার সাথে সাথে ঘটতে পারে।

  3. DateTimeএক্সএমএল বা জেএসএন (এবং অন্যান্য) এর সাথে একটি সিরিয়ালকরণ করা সময়টি গুরুত্বপূর্ণ না হলেও সর্বদা সময়কে অন্তর্ভুক্ত করবে । এটি খুব বিভ্রান্তিকর, বিশেষত জন্ম তারিখ এবং বার্ষিকীর মতো বিষয় বিবেচনা করে, যেখানে সময়টি অপ্রাসঙ্গিক।

  4. আর্কিটেকচার্যালি, DateTimeএটি একটি ডিডিডি মান-অবজেক্ট , তবে এটি এককভাবে দায়িত্বশীল একক নীতি লঙ্ঘন করে:

    • এটি একটি তারিখ + সময় টাইপ হিসাবে ডিজাইন করা হয়েছে, তবে প্রায়শই কেবল তারিখ হিসাবে ব্যবহৃত হয় (সময়কে উপেক্ষা করে), বা কেবলমাত্র দিনের সময় (তারিখ উপেক্ষা করে)। ( TimeSpanএছাড়াও প্রায়শই সময়ের সময়ের জন্য ব্যবহৃত হয় তবে এটি অন্য একটি বিষয়))

    • DateTimeKindসংযুক্ত মান .Kindসম্পত্তি তিন মধ্যে একক টাইপ splits, Unspecifiedসদয় সত্যিই গঠন মূল অভিপ্রায়, এবং উপায় যে ব্যবহার করা উচিত। Utcধরনের প্রান্তিক বিশেষভাবে ইউটিসি সঙ্গে মান, এবং Localধরনের প্রান্তিক পরিবেশ এর স্থানীয় সময় জোনের সাথেই মান।

      ধরনের জন্য পৃথক পতাকা থাকার সঙ্গে সমস্যা যে প্রতিটি সময় আপনি একটি গ্রাস হয় DateTime, আপনি হয় অনুমিত চেক করতে .Kindকি আচরণ নেওয়া সিদ্ধান্ত নিতে। কাঠামোর পদ্ধতিগুলি এগুলি করে তবে অন্যরা প্রায়শই ভুলে যায়। এটি সত্যই একটি এসআরপি লঙ্ঘন, কারণ টাইপের এখন পরিবর্তনের দুটি ভিন্ন কারণ রয়েছে (মান এবং ধরণ)।

    • এই দুটি এআইপি ব্যবহার করে যা সংকলন করে তবে প্রায়শই সংবেদনশীল হয় না, বা পার্শ্ব প্রতিক্রিয়াজনিত কারণে অদ্ভুত প্রান্তের কেস থাকে। বিবেচনা:

      // nonsensical, caused by mixing types
      DateTime dt = DateTime.Today - TimeSpan.FromHours(3);  // when on today??
      
      // strange edge cases, caused by impact of Kind
      var london = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
      var paris = TimeZoneInfo.FindSystemTimeZoneById("Romance Standard Time");
      var dt = new DateTime(2016, 3, 27, 2, 0, 0);  // unspecified kind
      var delta = paris.GetUtcOffset(dt) - london.GetUtcOffset(dt);  // side effect!
      Console.WriteLine(delta.TotalHours); // 0, when should be 1 !!!
      

সংক্ষেপে বলা যায়, যখন একটি DateTime করতে একটি জন্য ব্যবহার করা যেতে তারিখ কেবল-, এটি শুধুমাত্র তাই যখন প্রত্যেক জায়গা করা উচিৎ যে ব্যবহারসমূহ এটা সময় উপেক্ষা করা খুব সতর্কতা অবলম্বন করা হয়, এবং এছাড়াও প্রয়োজন এবং ইউটিসি বা অপরের থেকে রূপান্তর করতে চেষ্টা না খুব সতর্কতা অবলম্বন করা হয় সময় অঞ্চল।


4
কেবলমাত্র System.Time.Dateনেট নেট ফ্রেমওয়ার্কের মধ্যেই যদি শেষ হয়: /
রবার্ট জর্জেনসগার্ড এনগডাহাল

4
আপনি আজ এটি ব্যবহার করতে পারেন, কেবল কোরফেক্স মাইজেট ফিডের সদস্যতা নিন এবং আপনি System.Timeঅন্য প্যাকেজের মতোই টানতে পারেন । এটি এখনও "অফিসিয়াল" নয়।
ম্যাট জনসন-পিন্ট

16

আমি সন্দেহ করি যে কোনও উত্সর্গীকৃত খাঁটি Dateশ্রেণি নেই কারণ আপনার কাছে ইতিমধ্যে DateTimeযা এটি পরিচালনা করতে পারে। রয়ে Dateঅনুলিপি এবং বিভ্রান্তির হতে হবে।

আপনি যদি সেই DateTime.Dateসম্পত্তিটির জন্য স্ট্যান্ডার্ড অ্যাপ্রোচটি দেখতে চান যা DateTimeসময়কালের সাথে 12:00:00 মধ্যরাতে (00:00:00) সেট করা সময়ের সাথে একটি তারিখের অংশ দেয় ।


62
ডেডিকেটেড ডেট ক্লাসের একটি বড় সুবিধা হ'ল এটি সময় অঞ্চল এবং দিবালোক সংরক্ষণের জটিলতার মধ্যে পড়ে না।
দিমিত্রি সি।

4
@ ডিমিট্রিক আমি একমত নই - আপনি ইউটিসির সাথে ডেটটাইম ব্যবহার করতে পারেন এবং আপনি ডেটটাইম সহ ব্যাখ্যা করা সমস্যাগুলি থেকে ভুগবেন না, এমনকি যদি আপনি কেবল তারিখ চান তবে আপনি এখনও সময় জড়িত গণিত করতে পারেন (যেমন আমি 20 x 2 ঘন্টা বিয়োগ করলে আমাকে তারিখ দিন আজ হতে).
রবার্ট ম্যাকলিয়ান

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

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

4
@ রবার্টম্যাকলিন: "আমি যদি আজ থেকে ২০ x 2 ঘন্টা বিয়োগ করি তবে" তারিখটি বিবেচনা করার কোনও মানে নেই। এই উদাহরণস্বরূপ, আপনি কি আজকে "আজ মধ্যরাতে আজ" হিসাবে বিবেচনা করছেন? "আজ দুপুরের সময়"? ইত্যাদি এই সমস্যাটি ভালভাবে তৈরি হয় না। যদি আপনি "আজ মধ্যরাতের সময়" বলতে চান তবে আপনি ইতিমধ্যে ডেটটাইমের সাথে কাজ করছেন, কোনও তারিখ নয়। ঘন্টা বিয়োগ করতে আপনার এক ঘন্টার দরকার, একদিন নয়।
জাভিয়েয়ার

13

আমি refsrcfeedback@microsoft.com ইমেল করেছি এবং এটি তাদের উত্তর

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

এটি যেখানে সতর্কতাযুক্ত সেখানে কেবল ডিকোপল করুন, কেবল অন্ধভাবে কাজ করার জন্য জিনিসগুলি করবেন না। এটিকে এভাবে ভাবুন: ডেটটাইমকে তারিখ এবং সময়কে বিভক্ত করে আপনার কী সমস্যাটি সমাধান করা হয়েছে? এবং আপনার এখন কোন সমস্যা নেই? ইঙ্গিত: আপনি যদি ডেটটাইমটি .NET ফ্রেমওয়ার্ক জুড়ে ব্যবহার করেন: http ://references Source.microsoft.com/#mscorlib/system/datetime.cs#df6b1eba7461813b#references আপনি দেখতে পাবেন যে বেশিরভাগ একটি পদ্ধতি থেকে ফিরে এসেছে। ডেটটাইমের মতো আমাদের যদি একক ধারণা না থাকে তবে আপনাকে তারিখ এবং সময়ের একজোড়া ফেরত দিতে প্যারামিটার বা টিপলস ব্যবহার করতে হবে।

এইচটিএইচ, কিরিল ওসেনকভ

আমার ইমেলটিতে আমি জিজ্ঞাসা করেছি যে এটি কিনা কারণ ডেটটাইম মেশিনের সময় পাওয়ার জন্য টাইমজোনআইএনফো ব্যবহার করে - এখন স্বীকৃতিতে। সুতরাং আমি বলব কারণ এটি "ব্যবসায়ের নিয়ম" "খুব সংযুক্ত", তারা আমার কাছে তা স্বীকার করেছিল।


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

@ RobertJørgensgaardEngdahl দু: খজনকভাবে আমার আর সেই ইমেল অ্যাকাউন্টে অ্যাক্সেস নেই। তবে আমি বিশ্বাস করি যে আমি তাদের জিজ্ঞাসা করেছি কেন তারা ডেটটাইম কাঠামোয় সময় এবং তারিখের সাথে একত্রে কাজ করেছিল। এবং আমি ভেবেছিলাম যে আমি থিমথ্যামাজিশিয়ানদের সাথে একমত, আমি মনে করি এমএস এই নকশা পদ্ধতির গ্রহণ করেছে কারণ একটি আন্তর্জাতিক সংস্থা হিসাবে এটি তাদের চাহিদা পরিশোধ করে - এবং এখন এটি পরিবর্তন করতে দেরী - যখন ধারণাগুলি বিভক্ত হয় না।
এমভিসিডিএস 11'16

4
হয়তো এমএস পুরো ছড়িয়ে যেতে পারে এবং একটি SpaceTimeক্লাস প্রয়োগ করতে পারে ! আরে, আইনস্টাইনের মতে স্থান ও সময় শক্তভাবে মিলিত হয়েছে তাই আমাদের মধ্যে তাদের মধ্যে পার্থক্য করার দরকার নেই, তাই না? (!!!!!!!!!!!) আমি ধরণ C # এর নতুন, কিন্তু আমি বলার আছে, এটি একটি মাইনফিল্ড VB.NET থেকে আসছে যেখানে, সহজভাবে হয়, date, Today(), now, ইত্যাদি কোন DateTimeকোন prefixing আবর্জনা, মকিং (এবং এই সেমিকোলনগুলি এবং এই কেস-সংবেদনশীলতা নিশ্চিতভাবেই
উদ্বেগজনক

4
এবং তাদের নিজস্ব এসকিউএল সার্ভারের Dateটাইপ রয়েছে এবং ফলাফল অবশ্যই টাইপ হতে হবে Date- যদি Dateটাইপ ফলাফলটি সময় ব্যতীত স্ট্রিং হিসাবে প্রত্যাশিত হয়। উদাহরণস্বরূপ, ডেলফির তারিখটি টাইমটাইম হিসাবে থাকে তবে তারিখ এবং তারিখের চেয়ে টাইপফর্ম থাকে।
ব্যবহারকারী 2091150

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

10

সময়ের জন্য সময়, অঞ্চল অঞ্চল, স্থানীয় বনাম ইত্যাদি ইত্যাদি নিয়ে চিন্তা না করে আপনার যখন সাধারণ তারিখের প্রয়োজন হয় তখন আমি সময়গুলির জন্য একটি সাধারণ তারিখ কাঠামো তৈরি করেছি

https://github.com/claycephus/csharp-date


4

আপনার যদি তারিখ তুলনা চালানোর প্রয়োজন হয় তবে ব্যবহার করুন

yourdatetime.Date;

আপনি যদি স্ক্রিন ব্যবহার প্রদর্শিত হয়

yourdatetime.ToShortDateString();

.সংশ্লিষ্ট অংশটি আমি যা খুঁজছিলাম।
ব্রেন্ডন ভোগ্ট

3

আমাকে অনুমান করার অনুমতি দিন: সম্ভবত এটি কারণ এসকিউএল সার্ভার ২০০৮ অবধি এসকিউএলে কোনও তারিখের ডেটাটাইপ ছিল না তাই এটি কঠিন হবে তাই এসকিউএল সার্ভারে এটি সংরক্ষণ করুন ?? এবং এটি সমস্ত একটি মাইক্রোসফ্ট পণ্য পরে?


একটি ডিবি ডেটটাইম সি # ডেটটাইমের চেয়ে আলাদা। একটি ডিবি ডেটটাইমের একটি সময় অঞ্চল নেই তাই তারা আসলে কোনও নির্দিষ্ট তাত্ক্ষণিকের উল্লেখ করে না। তবে সি # জানেন না যে তাত্ক্ষণিকটি ইউটিসি পর্বের সময় থেকেই টিকগুলি সংরক্ষণ করে।
আরআরসিআরসি

4
আলোচনা ডেডিকেটেড তারিখ সম্পর্কে, ডেটটাইম অংশ সম্পর্কে এতটা নয় তাই আপনি যে বিন্দুটি বানাতে চাইছেন তা আমি বুঝতে পারি না?
প্লানুন

এটি প্রশ্নের উত্তর দেয় না। কোনও লেখকের সমালোচনা বা স্পষ্টতার জন্য অনুরোধ জানাতে, তাদের পোস্টের নীচে একটি মন্তব্য দিন leave
ব্যারানকা

@ বারানকা - প্রশ্নটিতে "সি # তে কোনও তারিখ শ্রেণি নেই কেন?"
এসটিএলডিভ

2

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


4
আপনি কেবল একটি তারিখ ব্যবহার করতে চান বা না চান না কেন আমি সত্যিই এটি একটি খারাপ সিদ্ধান্ত বলে মনে করি না। আমি তোমাকে হ্রাস করব না তবে এটি আমার মতামত।
জোনএইচ

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

+1 কারণ এটি সত্য ... এটি কি নেট .- নেট :-) :-) এর একমাত্র সমস্যা (বা সবচেয়ে বড়টি) ডেট এবং একটি টাইম টাইম যুক্ত করার জন্য এসকিউএল সার্ভারের কতগুলি সংস্করণ দরকার ছিল? এবং সেখানে তারা অনেক বেশি কার্যকর ছিল (অন্তত নিষ্ঠার কারণে)
xanatos

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

4
আমি কেবল এই ইস্যুতে কামড়েছি কারণ কোডের 1 অংশটি। তারিখের সম্পত্তিটি ব্যবহার করতে অবহেলিত এবং এভাবে সঠিকভাবে তুলনা করে নি। আমি অবশ্যই মনে করি যে এই ধরণের ত্রুটি এড়াতে কোনও তারিখের ধরণের প্রয়োজন যা কোনও সময় সঞ্চয় করে না
জোয়েলফ্যান

2

কেন? আমরা কেবল অনুমান করতে পারি এবং ইঞ্জিনিয়ারিং সমস্যা সমাধানে তেমন কিছু করে না। একটি ভাল অনুমান DateTimeযে এই ধরনের একটি কাঠামো যে সমস্ত কার্যকারিতা রয়েছে।

যদি এটি আপনার পক্ষে সত্যিই গুরুত্বপূর্ণ হয় তবে কেবলমাত্র DateTimeআপনার নিজের অপরিবর্তনীয় কাঠামোতে মোড়ক করুন যা কেবল তারিখটি প্রকাশ করে (বা DateTime.Dateসম্পত্তিটি দেখুন)।


2

রবার্টের উত্তর ছাড়াও আপনারও DateTime.ToShortDateStringপদ্ধতি রয়েছে। এছাড়াও, যদি আপনি সত্যিই কোনও তারিখের অবজেক্ট চান তবে আপনি সর্বদা অ্যাডাপ্টারের প্যাটার্নটি ব্যবহার করতে এবং ডেটটাইম অবজেক্টটি কেবল যা চান তা প্রকাশ করতে পারে (যেমন, মাস, দিন, বছর)।


2

সেখানে সবসময় DateTime.Dateসম্পত্তি থাকে যা সময়ের অংশটি কেটে দেয় DateTime। হতে পারে আপনি নিজের তারিখের টাইপে ডেটটাইমকে এমপ্ল্যাপুলেট বা মোড়তে পারেন।

এবং কেন এই প্রশ্নের জন্য, ভাল, আমি অনুমান করি যে আপনাকে অ্যান্ডার্স হেলজবার্গকে জিজ্ঞাসা করতে হবে।


1

কারণ তারিখটি জানতে, আপনাকে সিস্টেমের সময়টি (টিক্সে) জানতে হবে, যার মধ্যে সময় অন্তর্ভুক্ত রয়েছে - তবে কেন সেই তথ্যটি ফেলে দিন?

DateTimeDateআপনি যদি সময় সম্পর্কে কিছু যত্ন না করেন তবে একটি সম্পত্তি আছে ।


1

হ্যাঁ, এছাড়াও সিস্টেম.ডেটটাইম সিল করা হয়েছে। আমি কিছু লোকেরা আগের পোস্টগুলির দ্বারা উল্লিখিত সময়ের স্ট্রিংয়ের মান পাওয়ার জন্য একটি কাস্টম ক্লাস তৈরি করে এটির সাথে গেম খেলতে দেখেছি:

class CustomDate
{
    public DateTime Date { get; set; }
    public bool IsTimeOnly { get; private set; }

    public CustomDate(bool isTimeOnly)
    {
        this.IsTimeOnly = isTimeOnly;
    }

    public string GetValue()
    {
        if (IsTimeOnly)
        {
            return Date.ToShortTimeString();
        }

        else
        {
            return Date.ToString();
        }
    }
}

এটি সম্ভবত অপ্রয়োজনীয়, যেহেতু আপনি সহজেই নতুন ক্লাস ছাড়াই প্লেইন পুরাতন ডেটটাইম টাইপ থেকে গেটশোর্টটাইম স্ট্রিং বের করতে পারতেন could


0

আপনি যদি ডেটটাইম অবজেক্ট থেকে কেবল তারিখের অংশটি পেতে তারিখ বা আজকের বৈশিষ্ট্যগুলি ব্যবহার করেন।

DateTime today = DateTime.Today;
DateTime yesterday = DateTime.Now.AddDays(-1).Date;

তারপরে আপনি মধ্যরাতে সেট করা সময় উপাদানটির সাথে তারিখের উপাদানটি পাবেন।


4
এটি অবশ্যই আমি যা চেয়েছিলাম তা নয়
কার্লো ভি ড্যাঙ্গো

@ কার্লো ভি। ড্যাঙ্গো: আমি একমত নই। আমি মনে করি এটি ঠিক আপনি যা চেয়েছিলেন
স্যারাইড

4
@ কার্লো ভি। ড্যাঙ্গো: আপনি এই বৈশিষ্ট্যগুলি সম্পাদন করতে দেয় না এমন বিশেষত আপনি কী করতে চাইছেন?
eph_tagh

5
এটি বেশ সহজ: একটি তারিখের মেমরির পদচিহ্ন সম্ভবত কোনও ডেটটাইম (64৪ বিটের পরিবর্তে 32) এর অর্ধেক মেমরির পদচিহ্ন হবে। আপনি নিশ্চিত হয়ে উঠবেন যে আপনার বোকা সহকর্মী এটি করেন নি .আপনার তারিখে এটি পরিবর্তন করে তবে "কেবলমাত্র তারিখ" এর পিওভি থেকে "একই রাখছেন" যোগ করুন। যদি (একটি ত্রুটির জন্য) ডেটটাইমটি ডেটটাইমকাইন্ডে সেট করা হয় oc লোকাল এবং সময়টি ইউটিসি-তে স্বাভাবিক করা হয় তবে তারিখটি সম্ভবত পরিবর্তিত হবে (এক্সএমএসরিশালাইজেশন ব্যবহারের মাধ্যমে আমার সাথে ঘটেছে এবং জেএসএন-তে খারাপভাবে করা রাউন্ডট্রিপ) ... এটি কি যথেষ্ট?
xanatos
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.