অ্যান্টিটি ফ্রেমওয়ার্কের সাথে লিনক-এ এসকিউএল টাইম টাইম ছাড়াই কীভাবে তারিখের তুলনা করবেন?


303

দুটি অংশের সাথে তুলনা করার উপায় DateTimeরয়েছে Linq2Sqlতবে সময়ের অংশটিকে উপেক্ষা করা।

অ্যাপটি ডিবিতে আইটেম সঞ্চয় করে এবং একটি প্রকাশিত তারিখ যুক্ত করে। আমি সঠিক সময়টি রাখতে চাই তবে ততক্ষণে তারিখটি নিজেই টানতে সক্ষম হয়েছি।

আমি তুলনা করতে চান 12/3/89 12:43:34এবং 12/3/89 11:22:12তা দিনের প্রকৃত সময় উপেক্ষা তাই এই দুটি একই বলে মনে করা হয় না।

আমার ধারণা আমি 00:00:00তুলনা করার আগে দিনের সমস্ত সময় নির্ধারণ করতে পারি তবে আমি আসলে দিনের সময়টি জানতে চাই আমি কেবল তারিখের সাথে তুলনা করতে সক্ষম হতে চাই।

আমি কিছু কোড পেয়েছি যার একই সমস্যা রয়েছে এবং তারা বছর, মাস এবং দিনকে আলাদাভাবে তুলনা করে। এই কাজ করতে একটি ভাল উপায় আছে কি?

উত্তর:


534

অবজেক্টটিতে Dateসম্পত্তি ব্যবহার করার চেষ্টা করুন DateTime...

if(dtOne.Date == dtTwo.Date)
    ....

25
যদি আপনি 2017 সালের প্রথম দিকে কোনও সত্তা ফ্রেমওয়ার্ক পরিবেশে তারিখগুলির তুলনা করার উপায়ের সন্ধানের জন্য এখানে পৌঁছে থাকেন তবে আমি নীচে উত্তর আলেজান্দ্রো এবং ওয়াশ উইজার্ডের মন্তব্যটি দেখেছি।
মাইক দেভেন্নি

8
যদি আপনি 2018 এর মাঝামাঝি সময়ের পরে এখানে শেষ করেন তবে উপরের মত একটি অত্যন্ত সহায়ক মন্তব্য পড়ার উপায় খুঁজছেন, আপনার ভাগ্য নেই of
নারদনব

4
আপনি যদি 2019 এর প্রথম দিকে কমিকের ত্রাণের সন্ধানের পরে এখানে পৌঁছে থাকেন তবে আপনি এটি পেয়ে গেছেন।
ফিল রিংস্মুথ

1
এটি একেবারে সঠিক উত্তর নয়। ওপি বিশেষত বলেছে যে লিনাক থেকে এসকিউএল এবং ডেটটাইম.ডেটকে লিনাকের অভিব্যক্তিতে অনুমোদিত নয়।
ফিলিপ ভন

2
আপনি যদি ২০২০ এর প্রথম দিকে এখানে এসে থাকেন তবে আমি আশা করি আপনি করণাভাইরাস মহামারী সংকটের সময়ে নিজের যত্ন নিচ্ছেন এবং বাড়িতে থাকবেন are 2021 এ এখানে ফিরে যান!
মিঃ অট্ট

61

সত্যিকারের তুলনার জন্য আপনি ব্যবহার করতে পারেন:

dateTime1.Date.CompareTo(dateTime2.Date);

18
"সত্যিকারের তুলনা" বলতে কী বোঝ?
র্যান্ডলফো

6
র‌্যান্ডল্ফো: ব্যবহার করা == আপনাকে সমতা দেবে, সুতরাং দুটি তারিখ একই বা পৃথক কিনা। তুলনা করুন তাদের "তুলনা" করবেন, অর্থাত্: তারিখ 1> তারিখ 2, তারিখ 1 <তারিখ 2, বা তারিখ 1 == তারিখ 2 কিনা তা আপনাকে একটি পাসে একটি উপায় দিন a
রিড কোপসি

6
@ রিডকপসি আপনি কি কেবলমাত্র (তারিখটাইম 1. তারিখ <ডেটটাইম 1. তারিখ) ব্যবহার করতে পারবেন না?
ডেভিড

14
কিন্তু কে চায় -1, 0এবং 1সত্যই? এগুলি কেবল "কম", "সমান" এবং "বৃহত্তর" প্রতিনিধিত্বকারী যাদুকরী সংখ্যা। এবং আপনাকে ফলস্বরূপ পূর্ণসংখ্যার পরে কোনওটির সাথে "তুলনা" করতে হবে কারণ সেখানে তিনটি সম্ভাব্য মান রয়েছে। আমি @David সঙ্গে একমত হতে হবে যে এটা আরো অনেক কিছু প্রাকৃতিক ব্যবহার করা dateTime1.Date < dateTime1.Date, এবং একইভাবে <=, >এবং >=সবচেয়ে অ্যাপ্লিকেশন।
জেপ্প স্টিগ নীলসন

8
@ জেপ্পস্টিগনিয়েলসন আপনি যদি এমন কোনও কিছু ব্যবহার করেন যা কোমাইপ্রসনকে বাছাই করে বা গ্রহণ করে তবে আপনি এটি চান - অন্যথায় আপনি সাধারণত অপারেটরদের চান।
রিড কোপসি

45

লিনকিউ-র সাথে কাজ করার জন্য আমি এটি এটি করি।

DateTime date_time_to_compare = DateTime.Now;
//Compare only date parts
context.YourObject.FirstOrDefault(r =>
                EntityFunctions.TruncateTime(r.date) == EntityFunctions.TruncateTime(date_to_compare));

আপনি যদি dtOne.Date == dtTwo.Dateএটি ব্যবহার করেন তবে এটি কেবল লিনকিউয়ের সাথে কাজ করবে না (ত্রুটি: নির্দিষ্ট ধরণের সদস্য 'তারিখ' লিনকু থেকে সত্তাগুলি সমর্থন করে না)


22
এটি লিনকিউ থেকে সত্তার সাথে দুর্দান্ত কাজ করে। যাইহোক, EntityFunctionsনেট .৪.২.২ এ অবমূল্যায়ন করা হয়েছে। পরিবর্তে এই ব্যবহার করুন: DbFunctions.TruncateTime। এটি অভিন্ন পদ্ধতি হিসাবে দেখা যাচ্ছে, কেবল সরে গেছে ..
wasatchwizard

25

যদি আপনি সত্ত্বা ফ্রেমওয়ার্ক <v6.0 ব্যবহার করেন EntityFunctions.TruncateTime তবে আপনি যদি সত্তা ফ্রেমওয়ার্ক> = v6.0 ব্যবহার করছেন তবে ব্যবহার করুনDbFunctions.TruncateTime

DateTimeআপনি আপনার লিনক ক্যোয়ারির অভ্যন্তরে যে কোনও শ্রেণীর সম্পত্তি ব্যবহার করতে চান তার আশেপাশে (আপনার EF সংস্করণের ভিত্তিতে) ব্যবহার করুন

উদাহরণ

var list = db.Cars.Where(c=> DbFunctions.TruncateTime(c.CreatedDate) 
                                       >= DbFunctions.TruncateTime(DateTime.UtcNow));

এখানে কেবল একটি অনুস্মারক: যতক্ষণ না এটি লিনাক থেকে সত্তা।
কৌতূহলবাই

এটি সঠিক উত্তর হওয়া উচিত (2019 হিসাবে)। অ্যান্টিটি ফাংশনগুলি অবমূল্যায়ন করা হয়েছে এবং আপনাকে ল্যাম্বডা এক্সপ্রেশনে ডেটটাইম.ডেট ব্যবহার করার অনুমতি নেই (যে কারণেই হোক না কেন - আমি গুরুত্ব সহকারে বলতে চাইছি ... কেন তারা এটি স্থির করেনি ?!)।
ফিলিপ ভন

12
DateTime dt1 = DateTime.Now.Date;
DateTime dt2 = Convert.ToDateTime(TextBox4.Text.Trim()).Date;
if (dt1 >= dt2)
{
    MessageBox.Show("Valid Date");
}
else
{
    MessageBox.Show("Invalid Date... Please Give Correct Date....");
}

9
DateTime? NextChoiceDate = new DateTime();
DateTIme? NextSwitchDate = new DateTime();
if(NextChoiceDate.Value.Date == NextSwitchDate.Value.Date)
{
Console.WriteLine("Equal");
}

আপনি যদি অযোগ্য ডেটফিল্ডগুলি ব্যবহার করেন তবে আপনি এটি ব্যবহার করতে পারেন।


3
DateTime dt1=DateTime.ParseExact(date1,"dd-MM-yyyy",null);
DateTime dt2=DateTime.ParseExact(date2,"dd-MM-yyyy",null);

int cmp=dt1.CompareTo(dt2);

   if(cmp>0) {
       // date1 is greater means date1 is comes after date2
   } else if(cmp<0) {
       // date2 is greater means date1 is comes after date1
   } else {
       // date1 is same as date2
   }

2
DateTime econvertedDate = Convert.ToDateTime(end_date);
DateTime sconvertedDate = Convert.ToDateTime(start_date);

TimeSpan age = econvertedDate.Subtract(sconvertedDate);
Int32 diff = Convert.ToInt32(age.TotalDays);

ভিন্ন মানটি বয়সের জন্য দিনের সংখ্যা উপস্থাপন করে। মানটি নেতিবাচক হলে প্রারম্ভের তারিখটি শেষ তারিখের পরে পড়ে। এটি একটি ভাল চেক।


0

আপনার যোগদানের বা যেখানে ধারাটিতে Dateকলামের বৈশিষ্ট্যটি ব্যবহার করুন । পর্দার আড়ালে, এটি একটি CONVERT(DATE, <expression>)অপারেশন চালায়। এটি আপনাকে সময় ছাড়াই তারিখগুলির তুলনা করার অনুমতি দেয়।


0

আপনি ব্যবহার করতে পারেন সমান বা CompareTo

সমান : দুটি ডেটটাইম দৃষ্টান্তের একই তারিখ এবং সময় মান আছে কি না তা নির্দেশ করে এমন একটি মান প্রদান করে ।

রিটার্ন মান তুলনা করুন :

  1. শূন্যের চেয়ে কম : এই উদাহরণটি যদি মানের চেয়ে আগের হয়।
  2. শূন্য : এই উদাহরণটি যদি মান হিসাবে একই হয়।
  3. শূন্যের চেয়ে বৃহত্তর : যদি এই উদাহরণটি মানের চেয়ে পরে হয়।

ডেটটাইম শুল্কযুক্ত:

DateTime? first = new DateTime(1992,02,02,20,50,1);
DateTime? second = new DateTime(1992, 02, 02, 20, 50, 2);

if (first.Value.Date.Equals(second.Value.Date))
{
    Console.WriteLine("Equal");
}

অথবা

DateTime? first = new DateTime(1992,02,02,20,50,1);
DateTime? second = new DateTime(1992, 02, 02, 20, 50, 2);


var compare = first.Value.Date.CompareTo(second.Value.Date);

switch (compare)
{
    case 1:
        Console.WriteLine("this instance is later than value.");
        break;
    case 0:
        Console.WriteLine("this instance is the same as value.");
        break;
    default:
        Console.WriteLine("this instance is earlier than value.");
        break;
}

ডেটটাইম আটকানো যায় না:

DateTime first = new DateTime(1992,02,02,20,50,1);
DateTime second = new DateTime(1992, 02, 02, 20, 50, 2);

if (first.Date.Equals(second.Date))
{
    Console.WriteLine("Equal");
}

অথবা

DateTime first = new DateTime(1992,02,02,20,50,1);
DateTime second = new DateTime(1992, 02, 02, 20, 50, 2);


var compare = first.Date.CompareTo(second.Date);

switch (compare)
{
    case 1:
        Console.WriteLine("this instance is later than value.");
        break;
    case 0:
        Console.WriteLine("this instance is the same as value.");
        break;
    default:
        Console.WriteLine("this instance is earlier than value.");
        break;
}


-16
        int o1 = date1.IndexOf("-");
        int o2 = date1.IndexOf("-",o1 + 1);
        string str11 = date1.Substring(0,o1);
        string str12 = date1.Substring(o1 + 1, o2 - o1 - 1);
        string str13 = date1.Substring(o2 + 1);

        int o21 = date2.IndexOf("-");
        int o22 = date2.IndexOf("-", o1 + 1);
        string str21 = date2.Substring(0, o1);
        string str22 = date2.Substring(o1 + 1, o2 - o1 - 1);
        string str23 = date2.Substring(o2 + 1);

        if (Convert.ToInt32(str11) > Convert.ToInt32(str21))
        {
        }
        else if (Convert.ToInt32(str12) > Convert.ToInt32(str22))
        {
        }
        else if (Convert.ToInt32(str12) == Convert.ToInt32(str22) && Convert.ToInt32(str13) > Convert.ToInt32(str23))
        {
        }

5
-১: কেন শুধু ডেটটাইমকে বিশ্লেষণ করে @ কুইন্টিন রবিনসন পদ্ধতি ব্যবহার করবেন না? এই কোডটি আমি ডেইলি ডাব্লুটিএফ-তে দেখতে আশা করব।
উইলিয়াম হার্স্ট

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