= c">
gpt4 book ai didi

c# - 比较.net中的日期

转载 作者:行者123 更新时间:2023-12-03 22:16:50 29 4
gpt4 key购买 nike

我想比较两个日期。
从这两个日期中,我只使用 ToShortDateString() 获取日期组件, 如下所示。现在的问题是当我比较两个日期时。它的 throw 错误——

"Operator >= can't be applied to operands of type string and string."


DateTime srtdate = Convert.ToDateTime(allitem["StartDate"].Text.ToString());
DateTime srtdate = Convert.ToDateTime(allitem["StartDate"].Text.ToString());

(DateTime.Now.ToShortDateString() >= srtdate.ToShortDateString())

我需要比较 仅限日期组件 , 不是日期和时间在一起。

请建议什么是替代方式。谢谢

致乔恩:-

(我通读了你解释的所有内容,并希望理解你实际上试图表达的观点。只是为了澄清更多并做最后的检查,我将展示一个例子。)
我有一个 Web 界面,我在其中给出了 XYZ 名称的开始日期和结束日期(请注意,我在这里只能输入日期,不能输入时间)。

Start Date - 22-Feb-2012 AND End Date - 22-Feb-2012



现在在后端(代码)中,如果开始日期和结束日期与当前日期相同或当前日期在开始和结束日期之间,我想要设置一个 ACTIVE 标志,否则不设置。我给出的条件是这样的:-
if ((DateTime.Today >= strdate.Date) && (DateTime.Today <= enddate.Date))
lblCondition.Text = "CHECKED";

现在当我调试代码时,

Both DateTime.Today and strdate.Date gives the value as 2/22/2012 12:00:00 AM.



因此,Jon 我的问题是:-“今天”和“日期”是否按照上述要求工作,其中仅使用日期组件。我希望它会。

非常感谢您之前的所有解释。

最佳答案

为什么要转换为字符串表示?如果您只想将日期部分与两个 DateTime 进行比较值,只需使用 Date 他们每个人的属性(property):

if (x.Date >= y.Date)

Today 属性相当于 DateTime.Now.Date .

两者 DateToday剥去时间部分,留下午夜的时间。仍然有一种能够表示时间的类型并不理想,但这就是 DateTime 的方式。 API 工作:(

请注意,您通常应该避免使用 DateTime.NowDateTime.Today在 Web 应用程序中,除非您对使用系统默认时区作为日期边界非常满意。用户对“今天”的想法可能与服务器的不同。

您应该避免使用字符串转换,除非您的目标是真正获得文本表示。

当然,另一种选择是使用我正在构建的日期/时间库, Noda Time ,您可以在其中使用 LocalDate类型 - 显然,这更清楚地表明您只对日期感兴趣,而不对时间感兴趣。

编辑:由于 OP 似乎不相信 Date确实忽略了时间组件,这是一个例子:
using System;

public class Test
{
static void Main()
{
// Two DateTime values with different times but
// on the same date
DateTime early = new DateTime(2012, 2, 22, 6, 0, 0);
DateTime late = new DateTime(2012, 2, 22, 18, 0, 0);

Console.WriteLine(early == late); // False
Console.WriteLine(early.Date == late.Date); // True
}
}

关于c# - 比较.net中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9390878/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com