比较日期作为字符串
本文关键字:字符串 日期 比较 | 更新日期: 2023-09-27 18:07:40
我找不到一种方法来查找从现在起至少一年以内的所有日期(字符串)。
我保持在数据库日期字段字符串,如"DateTime.toShortDateString()",我现在需要比较。
它看起来像月/日/年= 9/6/2011
它需要从DateTime.now开始至少低一年。
我这样做了,它没有返回所有需要的日期。
DateTime Date = DateTime.Now;
int Year = Date.Year;
Year -= 1;
int Month = Date.Month;
string MonthYear = Month.ToString() + "%" + Year.ToString();
string Query = "SELECT * FROM Orders WHERE DateOrder < @STU ";
SqlCommand cmd = new SqlCommand(Query, con);
cmd.Parameters.AddWithValue("@STU", MonthYear);
修改数据库模式并将日期存储为ISO 8601格式(yyyy-mm-dd
)或ISO 8601紧凑格式(yyyymmdd
)的char(10)
- http://www.cl.cam.ac.uk/~ mgk25/iso-time.html
- http://en.wikipedia.org/wiki/ISO_8601
给你正确的排序和正确的比较。此外,DateTime.Parse()和TryParse()都将接受该格式,而不考虑文化(嗯…只有一个例外:沙特阿拉伯。图)。DateTime.ToString("Y") or
字符串。Format("{0:Y}", someDateTimeInstance) '将给出ISO 8601格式。
应该是对数据库的一个简单的更新。
如果你使用的是SQL Server 2008:使用新的数据类型Date
存储日期就更好了。
也许反序列化这些DateTime字符串,然后比较作为DateTime对象?
var date=DateTime.Parse(stringFromDb, new CultureInfo("en-US"));
那么你可以这样做:
if (dateToCompare1 < dateToCompare2)
或者任何你想要的比较运算符
编辑:从你的评论中,我认为你只希望使用从现在起一年以后的日期(或等于?)所以你可以这样做:
var date=DateTime.Parse(stringFromDb, new CultureInfo("en-US"));
if (date >= DateTime.Now.AddYears(1) {
// Do whatever you want with the "kept" dates
}
假设你有一个字符串:
string strDate1 = "09/06/2011";
string strDate2 = "09/06/2011";
DateTime date1 = DateTime.Parse(strDate1);
DateTime date2 = DateTime.Parse(strDate2);