我想将以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
但它仍然给我同样的错误。请让我知道如何解决这个问题。谢谢。
答案 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
。