2016-09-28 69 views
0

我想比较使用DateTime.Now的当前日期到选定假期的硬编码列表以测试当前日期是否等于假期。我刚刚开始使用C#,所以我不想寻找一个优雅的答案,我只是想与我必须了解的结果一起工作。如何简单地比较当前日期是否是假期

<script Language="c#" runat="server"> 
    void Page_Load() 
    { 
    DateTime date = DateTime.Now; 
    dateToday.Text = " " + date.ToString("d"); 

    string newYear = "01/01/2016"; 
    if (newYear == dateTime.Now){ 
     message.Text = ("This is New Years"); 
     } 
    } 
    <body> 
    <asp:label id="message" runat="server"/> 
    </body> 
+0

提示:字符串不是日期....(反之亦然) –

+0

您不允许将字符串与字符串日期进行比较吗?我认为将DateTime.Now转换为字符串将允许我将它与另一个(字符串)日期进行比较? – penmas

+0

时间部分..... –

回答

1

我会用DateTime.Date property比较日期,这里是一个例子

DateTime now = DateTime.Now; 
DateTime newYear = new DateTime(2016, 1, 1); 
// or DateTime newYear = DateTime.Parse("01/01/2016"); 

if (newYear.Date == now.Date){ 
    message.Text = "This is new years"; 
} 

你是最好的日期打交道时使用DateTime结构,因为它传达不是一个字符串更多的含义。当您想要执行更复杂的操作时,您还可以在排序,过滤,操作和显示数据方面获得更多灵活性。例如:

var holidays = new List<DateTime> { new DateTime(2016, 1, 1), new DateTime(2016, 12, 25) }; 
var now = DateTime.Now; 

if (holidays.contains(now.Date){ 
    message.Text = "Today is a holiday!"; 
} 
2

不要使用字符串比较日期。有很多不同的方式来表示日期以将它们可靠地作为字符串进行比较。他们作为比较时间(和使用Today代替Now忽略时间部分):

string newYear = new DateTime(2016,1,1); 
if (newYear == DateTime.Today) 
+0

你通常不能比较c#中的两个字符串,还是仅仅是比较两个项目的最佳做法? – penmas

+2

@penmas你没有比较2个字符串。您正在比较字符串和日期 – deviantxdes

+1

您可以比较两个_strings_,但它是_literal_比较。 “01/01/2016”和“2016-01-01”是相同的_date_但不同的_strings_。 –

0

解析字符串转换成日期DateTime.Parse()并进行比较。

if (DateTime.Parse(newYear)== DateTime.Now.Date) 
相关问题