সি # তে ডেটটাইম কীভাবে তুলনা করবেন?


137

আমি চাই না যে ব্যবহারকারী পিছনের তারিখ বা সময় দেবে।

প্রবেশের তারিখ এবং সময়টি যদি বর্তমান সময়ের চেয়ে কম হয় তবে আমি কীভাবে তুলনা করতে পারি?

যদি বর্তমান তারিখ এবং সময় 17-জুন-2010, 12:25 অপরাহ্ন হয়, আমি চাই যে ব্যবহারকারী 17 জুন -2010 এর আগে এবং সময় 12:25 এর আগে সময় দিতে পারে না।

আমার ফাংশনটি মিথ্যা হিসাবে পছন্দ করুন যদি ব্যবহারকারীর দ্বারা প্রবেশের সময়টি 16-জুন-2010 এবং সময় 12:24 হয়

উত্তর:


179

এমএসডিএন: ডেটটাইম.কম্পেয়ার

DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
DateTime date2 = new DateTime(2009, 8, 1, 12, 0, 0);
int result = DateTime.Compare(date1, date2);
string relationship;

if (result < 0)
   relationship = "is earlier than";
else if (result == 0)
   relationship = "is the same time as";         
else
   relationship = "is later than";

Console.WriteLine("{0} {1} {2}", date1, relationship, date2);
// The example displays the following output:
//    8/1/2009 12:00:00 AM is earlier than 8/1/2009 12:00:00 PM

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

2
আমি আপনার উত্তরটি মূল্যবান পেয়েছি কারণ আমি এমন কোনও উত্তরাধিকারের কোডটি দেখছি যেখানে এটি ব্যবহৃত হয়
এরিক বার্গস্টেট


তবে ডিবাগ দৃষ্টিকোণ থেকে, মুস্টাএনজির উত্তরটি আরও পঠনযোগ্য।
হিমালয় গার্গ

295

মাইক্রোসফ্ট অপারেটরগুলি '<' এবং '>' প্রয়োগ করেছে। সুতরাং আপনি দুটি তারিখ তুলনা করতে এগুলি ব্যবহার করুন।

if (date1 < DateTime.Now)
   Console.WriteLine("Less than the current time!");

6
সূত্র এমএসডিএন; এই documeted হয় তারিখসময় অপারেটর awkwardly হিসাবে "চেয়ে DateTime.Greater" লেবেল, "DateTime.LessThanOrEqualTo" ..... msdn.microsoft.com/en-us/library/ff986512%28v=vs.90%29.aspx
সালমান সিদ্দিকী

বর্তমান .NET সংস্করণ: msdn.microsoft.com/en-us/library/ff986512(v=vs.110).aspx
juFo

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

2
এটা ভুল. এটি ইউটিসি এবং স্থানীয় সময়কে সঠিক উপায়ে তুলনা করতে পারে না।
আলটিয়ানো জেরুং

4
এটি সম্পূর্ণ উত্তর নয়। ডেটটাইম কাইন্ডকে অ্যাকসাইড্রেশনে নেওয়ার সময়, এটি হয় হয় date1.ToLocalTime() < DateTime.Nowবা হয় date1.ToUniversalTime() < DateTime.UtcNow
ইউরিস্লাভ

21

মিউএসটিএনজির উত্তরটি সব বলেছে, তবে লিঙ্কগুলি এবং সমস্ত কিছু সহ আমি এটিকে আরও কিছুটা বিস্তৃত করার জন্য এটি যুক্ত করছি।


প্রচলিত অপারেটররা

DateTimeনেট ফ্রেমওয়ার্ক ১.১ এর জন্য উপলব্ধ । এছাড়াও, DateTimeপ্রচলিত অপারেটর +এবং ব্যবহার করে অবজেক্টগুলির সংযোজন এবং বিয়োগও সম্ভব -

এমএসডিএন-এর একটি উদাহরণ:

সমতা:
System.DateTime april19 = new DateTime(2001, 4, 19);
System.DateTime otherDate = new DateTime(1991, 6, 5);

// areEqual gets false.
bool areEqual = april19 == otherDate;

otherDate = new DateTime(2001, 4, 19);
// areEqual gets true.
areEqual = april19 == otherDate;

অন্যান্য অপারেটরগুলিও একইভাবে ব্যবহার করা যেতে পারে।

সমস্ত অপারেটরের জন্য উপলব্ধ তালিকা এখানে DateTime


1
আপনি কেবল তাদের উত্তরটি বিস্তৃত করতে সম্পাদনা করতে পারেন। যাই হোক, আপনি ব্যবহার করতে পারবেন না +দুই জন্য DateTimeoperands, আপনি কি করতে পারেন DateTime - DateTime, অথবা DateTime + TimeSpan, অথবা DateTime - TimeSpan
জোয়

5

সাধারণ যদি তোমার তুলনা প্রয়োজন DateTimesএকই সঙ্গে Kind:

if (date1.ToUniversalTime() < date2.ToUniversalTime())
    Console.WriteLine("date1 is earlier than date2");

থেকে ব্যাখ্যা দুটিই MSDN সম্পর্কে DateTime.Compare(এটাও মত অপারেটরদের জন্য প্রাসঙ্গিক >, <, ==এবং ইত্যাদি):

টি 1 থেকে টি 2 এর সম্পর্ক নির্ধারণের জন্য, তুলনা পদ্ধতিটি T1 এবং t2 এর টিক্স সম্পত্তিটির সাথে তুলনা করে তবে তাদের ধরণের সম্পত্তি উপেক্ষা করে । ডেটটাইম অবজেক্টের তুলনা করার আগে, নিশ্চিত হয়ে নিন যে বস্তুগুলি একই সময় অঞ্চলে সময় উপস্থাপন করে।

সুতরাং, একটি সাধারণ তুলনা DateTimesবিভিন্ন সময় অঞ্চলতে প্রতিনিধিত্ব করা হয় যে ডিল করার সময় একটি অপ্রত্যাশিত ফলাফল দিতে পারে ।


ঠিক এই কারণে একটি বাগ পেয়েছিল ... তারা যখন এই পদ্ধতিটি তৈরি করছিল তখন তারা কী ভাবছিল :(
লেগোলাস

3

আপনার যদি দুটি ডেটটাইম দেখতে একই রকম হয় তবে তুলনা বা সমান আপনার প্রত্যাশার সাথে ফিরে আসে না, এটি কীভাবে তাদের তুলনা করা যায়।

এখানে 1-মিলিসেকেন্ড যথার্থতার সাথে একটি উদাহরণ:

bool areSame = (date1 - date2) > TimeSpan.FromMilliseconds(1d);

1
//Time compare.
private int CompareTime(string t1, string t2)
{
    TimeSpan s1 = TimeSpan.Parse(t1);
    TimeSpan s2 = TimeSpan.Parse(t2);
    return s2.CompareTo(s1);
}

2
তিনি তুলনা DateTimeকরতে চানstring
ড্যানহ

আপনি ডেটটাইমকে স্ট্রিংয়ে রূপান্তর করতে পারেন
ডায়ু ফান দিনহ

বা: আপনি ব্যবহার করতে পারেন: ডেটটাইম.কম্পিয়ার (স্টার্ট ডেট, শেষ তারিখ)
ফান দিনহ

আমার সমস্যা না এবং এটি কি আহমেতের থেকে পৃথক ?
ড্যানহ

0

এখানে ইউনিটি মিলিওর একটি সাধারণ সাধারণ উদাহরণ

using UnityEngine;

public class Launch : MonoBehaviour
{
    void Start()
    {
        Debug.Log("today " + System.DateTime.Now.ToString("MM/dd/yyyy"));

        // don't allow the app to be run after June 10th
        System.DateTime lastDay = new System.DateTime(2020, 6, 10);
        System.DateTime today = System.DateTime.Now;

        if (lastDay < today) {
            Debug.Log("quit the app");
            Application.Quit();
        }
        UnityEngine.SceneManagement.SceneManager.LoadScene("Welcome");
    }
}

-3
public static bool CompareDateTimes(this DateTime firstDate, DateTime secondDate) 
{
   return firstDate.Day == secondDate.Day && firstDate.Month == secondDate.Month && firstDate.Year == secondDate.Year;
}

4
.NET এ, "তুলনা" এর অর্থ সাধারণত "আপেক্ষিক তুলনা" হয় এবং "সমতা পরীক্ষা" হয় না। এখানে প্রশ্ন ছিল তুলনামূলক তুলনা সম্পর্কে। অতিরিক্তভাবে আপনি কোডটি সঠিকভাবে ফর্ম্যাট করতে কোনও চেষ্টা করেননি।
লাসে ভি কার্লসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.