如何检查两个日期之间的日期(不是SQL)
本文关键字:日期 之间 不是 SQL 两个 何检查 检查 | 更新日期: 2023-09-27 18:25:58
在我的WinForm中,用户在文本框中输入日期为'210514'或'231113(ddmmyy格式)假设今天的日期=2014年10月29日。使用Visual Studio 2010 C#4.0。电脑日期时间设置:GMT+08:00 dd MMM yy。
CodeBehind:
// Split the input string into YYMMDD format and set it to a date object
DateTime inputDate = new DateTime(Convert.ToInt32(input.Substring(4, 2)), Convert.ToInt32(input.Substring(2, 2)), Convert.ToInt32(input.Substring(0, 2)));
//WinForm允许用户输入日期,不早于今天日期前2年,也不超过今天日期后1个月。
DateTime minDate = DateTime.Now.AddMonths(-24);
DateTime maxDate = DateTime.Now.AddMonths(1);
我尝试了很多方法,但都不起作用(我也检查了很多线程/论坛)。
//Method 1
if(inputDate >= minDate && inputDate <= maxDate)
return true
//Method 2: B return true but A ***always*** return false, Why??
if (inputDate >= minDate)
A = true;
if (inputDate <= maxDate)
B = true;
//Method 3: B return true but A ***always*** return false, Why??
if ((DateTime.Now - inputDate).Days >= (DateTime.Now - minDate).Days)
A = true;
if (inputDate <= maxDate)
B = true;
方法A是正确的,如果使用调试器,您就会明白为什么它不起作用。
string input = "291014";
DateTime inputDate = new DateTime(
Convert.ToInt32(input.Substring(4, 2)),
Convert.ToInt32(input.Substring(2, 2)),
Convert.ToInt32(input.Substring(0, 2)));
Console.WriteLine(inputDate.Year); // 14, oops
Console.WriteLine(DateTime.Now.Year); // 2014
要修复它,请在的年份中添加2000
DateTime inputDate = new DateTime(
2000 + Convert.ToInt32(input.Substring(4, 2)),
Convert.ToInt32(input.Substring(2, 2)),
Convert.ToInt32(input.Substring(0, 2)));
我将此作为答案发布,以便发布代码。我刚刚做了这个:
DateTime inputDate;
if (DateTime.TryParseExact(this.textBox1.Text, "ddMMyy", null, DateTimeStyles.None, out inputDate))
{
var minDate = DateTime.Today.AddYears(-2);
var maxDate = DateTime.Today.AddMonths(1);
var A = inputDate >= minDate;
var B = inputDate <= maxDate;
MessageBox.Show(string.Format("input: {1:d}{0}min: {2:d}{0}max: {3:d}{0}A: {4}{0}B: {5}",
Environment.NewLine,
inputDate,
minDate,
maxDate,
A,
B));
}
else
{
MessageBox.Show("Invalid input");
}
我在我的TextBox
中输入了"091014",消息说A
是true
。"101012"answers"101014"也是如此。除非你的系统中有什么东西损坏了,否则不是代码,而是你错了。测试那个确切的代码,看看你是否得到了同样的结果。