如何将数据库中的日期时间值与文本框日期时间值进行比较

时间:2017-09-26 06:28:24

标签: c# datetime datetime-format

我想将以dd / mm / yyyy格式存储的数据库日期时间值与以dd-mmm-yyyy格式存储的文本框值进行比较。
我已经厌倦了使用parseexact将数据库值转换为dd-mmm-yyyy格式 -

DateTime dtdb = DateTime.ParseExact(dr["paydate"].ToString(), "dd-MMM-yyyy",null);

然后与文本框值进行比较,

if(dtdb.ToString() != txtpaydate.Text)

但它给了我这个错误:

  

字符串未被识别为有效的DateTime。

我也试过这样做:

Convert.ToDateTime(dr["paydate"]).ToString("dd-MMM-yyyy")!= txtpaydate.text

但它仍然给我同样的错误。请让我知道如何解决这个问题。谢谢。

4 个答案:

答案 0 :(得分:1)

您需要将文本框解析为DateTime对象,并且您可以完全自由地使用常规算术运算,例如:

if(dtdb> dttb)等。如果您在解析它时遇到任何问题,请查看this页面以获取更多信息。

如果还有其他问题,请随时询问。但是请先检查stackoverflow。祝你有美好的一天。

答案 1 :(得分:0)

你可以将DateTime值和textbox DateTime值转换为时间戳(从1970-0-0)然后比较它

编辑 也许你想阅读rfc3389 about timestamp

答案 2 :(得分:0)

string dtdb =dr["paydate"].ToString("dd-MMM-yyyy");
var dt=txtpaydate.Text.ToString("dd-MMM-yyyy");
if(dtdb!= dt)
{
 //do what you want
}

答案 3 :(得分:0)

如上所述,最好操纵纯DateTime个对象。 你可以这样做:

// Example strings
var myDate1AsString = "31/12/2016";
var myDate2AsString = "31-dec-2016";

// DateTime object used to retrieved the dates as string
var myDate1AsDate = new DateTime();
var myDate2AsDate = new DateTime();

// Parse the strings; if the parse fail, the date is set to DateTime.MinValue
DateTime.TryParseExact(myDate1AsString, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out myDate1AsDate);
DateTime.TryParseExact(myDate2AsString, "dd-MMM-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out myDate2AsDate);

// Correctly compare the dates
var result = DateTime.Compare(myDate1AsDate, myDate2AsDate);

// or, directly compare a date with the other.
if (!myDate1AsDate.Equals(myDate2AsDate))
{
    // Do some stuff.
}

解析日期时始终使用CultureInfo