[C#] C #에서 DateTime을 비교하는 방법은 무엇입니까?

사용자가 이전 날짜 또는 시간을 제공하고 싶지 않습니다.

입력 한 날짜와 시간이 현재 시간보다 적은지 어떻게 비교할 수 있습니까?

현재 날짜와 시간이 2010 년 6 월 17 일 오후 12시 25 분이면 사용자는 2010 년 6 월 17 일 이전과 오후 12시 25 분 이전의 날짜를 사용자에게 줄 수 없습니다.

사용자가 입력 한 시간이 2010 년 6 월 16 일이고 오후 12시 24 분이면 내 함수가 false를 반환하는 것처럼



답변

MSDN : DateTime.Compare

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


답변

Microsoft는 ‘<‘및 ‘>’연산자도 구현했습니다. 따라서이 두 날짜를 비교하는 데 사용합니다.

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


답변

MuSTaNG의 답변에 모든 내용이 나와 있지만 링크와 모두를 사용하여 조금 더 정교하게 만들기 위해 추가하고 있습니다.


기존 사업자

DateTime.NET Framework 1.1부터 사용할 수 있습니다 . 또한 DateTime기존 연산자 +와를 사용하여 객체의 뺄셈 도 가능합니다 -.

MSDN의 한 가지 예 :

평등:

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.


답변

일반적으로DateTimes 동일한 것과 비교해야합니다 Kind.

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

에서 설명 MSDN가 에 대해 DateTime.Compare(이것은 또한 같은 사업자 관련 >, <, ==등)

t1과 t2의 관계를 확인하기 위해 Compare 메서드는 t1과 t2의 Ticks 속성을 비교하지만 Kind 속성은 무시합니다 . DateTime 오브젝트를 비교하기 전에 오브젝트가 동일한 시간대의 시간을 나타내는 지 확인하십시오.

따라서 간단한 비교는 DateTimes다른 시간대로 표시되는 처리시 예기치 않은 결과를 제공 할 수 있습니다 .


답변

두 개의 DateTime이 동일하게 보이지만 비교 또는 같음이 예상 한 결과를 반환하지 않는 경우이를 비교하는 방법입니다.

1 밀리 초 정밀도의 예는 다음과 같습니다.

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


답변

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


답변

Unity 환경의 전형적인 간단한 예는 다음과 같습니다.

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");
    }
}