Java 如何查找指定日期范围内的给定日期
这是我的密码Java 如何查找指定日期范围内的给定日期,java,date-format,simpledateformat,Java,Date Format,Simpledateformat,这是我的密码 boolean isWithinRange(String d) { boolean withinDate = false; try { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date = dateFormat.parse(d); withinDate = !(date.before(startDate) || da
boolean isWithinRange(String d)
{
boolean withinDate = false;
try
{
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse(d);
withinDate = !(date.before(startDate) || date.after(endDate));
}
catch (ParseException parseException)
{
}
return withinDate;
}
投入
2015-11-262015-11-26-副本 返回true,但我需要的是“2015-11-26”应该为true,“2015-11-26-副本”应该为false。这是因为高兴地解析“2015-11-26”并忽略“-Copy”部分 各国: 解析给定字符串开头的文本以生成日期。 该方法不能使用给定字符串的整个文本 要检测整个字符串是否已被使用,请改用方法。ParsePosition告诉您解析停止的位置。只需将其与原始日期字符串的长度进行比较。这是因为愉快地解析“2015-11-26”并忽略“-Copy”部分 各国: 解析给定字符串开头的文本以生成日期。 该方法不能使用给定字符串的整个文本
要检测整个字符串是否已被使用,请改用方法。ParsePosition告诉您解析停止的位置。只需将其与原始日期字符串的长度进行比较。这里的问题是我们正在传递日期格式“yyy-MM-dd”。这将验证此格式的给定输入 比如说,
static boolean isWithinRange(String d)
{
boolean withinDate = false;
try
{
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = dateFormat.parse(d);
withinDate = !(date.before(startDate) || date.after(endDate));
}
catch (ParseException parseException)
{
parseException.printStackTrace();
}
return withinDate;
}
上面的代码引发异常,因为我们将日期格式传递为“yyyy-MM-dd hh:MM:ss”。因此,这将查找小时、分钟和秒这里的问题是我们正在传递日期格式“yyyy-MM-dd”。这将验证此格式的给定输入
public static void main(String[] args) {
isWithinRange("2015-12-11 - Copy");
isWithinRange("2015-12-11");
}
public static boolean isWithinRange(String d) {
boolean withinDate = false;
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String dd = d.indexOf(" ") !=-1 ? d.substring(0, d.indexOf(" ")) : d; // Find valid String
if(d.equals(dd)){
Date date = dateFormat.parse(d);
withinDate = !(date.before(startDate)) || date.after(endDate)));
}else{
withinDate =false;
}
} catch (ParseException parseException) {
}
return withinDate;
}
比如说,
static boolean isWithinRange(String d)
{
boolean withinDate = false;
try
{
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = dateFormat.parse(d);
withinDate = !(date.before(startDate) || date.after(endDate));
}
catch (ParseException parseException)
{
parseException.printStackTrace();
}
return withinDate;
}
上面的代码引发异常,因为我们将日期格式传递为“yyyy-MM-dd hh:MM:ss”。因此,这将找到小时分和秒数,只需在测试前测试大小是否为10:
public static void main(String[] args) {
isWithinRange("2015-12-11 - Copy");
isWithinRange("2015-12-11");
}
public static boolean isWithinRange(String d) {
boolean withinDate = false;
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String dd = d.indexOf(" ") !=-1 ? d.substring(0, d.indexOf(" ")) : d; // Find valid String
if(d.equals(dd)){
Date date = dateFormat.parse(d);
withinDate = !(date.before(startDate)) || date.after(endDate)));
}else{
withinDate =false;
}
} catch (ParseException parseException) {
}
return withinDate;
}
if (d.length!10) return false;
测试前,只需测试尺寸是否为10:
if (d.length!10) return false;
解析前是否需要修剪日期字符串?。是否有其他方法不修剪日期字符串。是否需要在解析之前修剪日期字符串?。是否有其他不修剪日期字符串的方法。只有当
d
的第一个字符不是日期的一部分时,这种方法才有效。对于类似于2015-12-11-Copy
的内容,这仍将返回true
。用户需要注意第一个空格,但他/她对此感到困惑,请修剪()输入字符串的前导空格和后导空格。您将找到trim()[只有当d
的第一个字符中有一个空格不是日期的一部分时,这才有效。对于2015-12-11-Copy
之类的内容,这仍然会返回true
。用户需要注意第一个空格,但他/她会混淆它,trim()输入字符串的前导空格和后导空格。您会发现trim()[