我不希望用户提供回溯日期或时间。
如何比较输入的日期和时间是否少于当前时间?
如果当前日期和时间是2010年6月17日下午12:25,我希望用户不能提供2010年6月17日之前的日期和下午12:25之前的时间。
就像我的函数一样,如果用户输入的时间是2010年6月16日且时间是12:24,则返回false
我不希望用户提供回溯日期或时间。
如何比较输入的日期和时间是否少于当前时间?
如果当前日期和时间是2010年6月17日下午12:25,我希望用户不能提供2010年6月17日之前的日期和下午12:25之前的时间。
就像我的函数一样,如果用户输入的时间是2010年6月16日且时间是12:24,则返回false
Answers:
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!");
date1.ToLocalTime() < DateTime.Now
或date1.ToUniversalTime() < DateTime.UtcNow
。
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
操作数,可以使用DateTime - DateTime
,或DateTime + TimeSpan
或DateTime - TimeSpan
。
在一般情况下,你需要比较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
不同时区时给出意外结果。
//Time compare.
private int CompareTime(string t1, string t2)
{
TimeSpan s1 = TimeSpan.Parse(t1);
TimeSpan s2 = TimeSpan.Parse(t2);
return s2.CompareTo(s1);
}
DateTime
不string
这是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");
}
}
public static bool CompareDateTimes(this DateTime firstDate, DateTime secondDate)
{
return firstDate.Day == secondDate.Day && firstDate.Month == secondDate.Month && firstDate.Year == secondDate.Year;
}