我需要这个字符串格式的帮助:“08/13/2015 10:03:50”
我想比较2分钟范围内的时间。我得到一个正则表达式,但是当时间是字符串格式并且交叉到另一个小时时不知道如何去做(例如10:59:30将翻到11:01:30而不是10: 61:30)。
代码就像
string1 = "08/13/2015 10:03:50";
string2 = "08/13/2015 10:05:50, 08/13/2015 10:55:50, 08/13/2015 10:15:50,
08/13/2015 10:14:50, 08/13/2015 10:25:50, 08/13/2015 10:55:50";
if(string2.contains("string1(with plus or minus 2 of string1 min)"){
//Pass
}
我用来获取日期的代码
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Calendar cal = Calendar.getInstance();
String timeOfUpdate = dateFormat.format(cal.getTime());
System.out.println(timeOfUpdate);
答案 0 :(得分:4)
将Strings
解析为注释中建议的Date
,然后通过getTime() method检索两个Date
对象的时间戳。将这两个数字相互减去。这可以在毫秒中获得这些时间的时间距离,您可以将其与转换为毫秒的条件进行比较。
更新:要评估包含日期列表的字符串,您必须使用String#split()将字符串沿着列表分隔符拆分为字符串数组。
然后,您可以将每个子字符串解析为Date对象,并根据第一段中提到的#getTime()方法检索每个子字符串的时间戳。将这些时间戳收集到列表中。
可以在此列表中搜索预期范围内的条目,例如使用Stream API's filter function(Java 8和更高版本)。这是关于该功能的简短tutorial。
答案 1 :(得分:2)
尝试执行以下步骤:
对步骤#2中检索到的结果运行循环
如果您仍然遇到任何问题,请与我们联系。
答案 2 :(得分:1)
您可以使用date.getTime()
获取自1970年以来的毫秒日期并拆分日期字符串数组:
int offsetMinutes = 2;
String string1 = "08/13/2015 10:03:50, 08/14/2015 10:05:50, 08/14/2015 10:05:50";
String string2 = "08/13/2015 10:05:49, 08/14/2015 10:05:50, 08/15/2015 10:05:50";
String[] string1Array = string1.split(",");
String[] string2Array = string2.split(",");
DateFormat format = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss", Locale.ENGLISH);
for (int j = 0 ; j< string1Array.length;j++)
{
Date date1 = format.parse(string1Array[j].trim());
for (int i = 0; i < string2Array.length; i++) {
Date date2 = format.parse(string2Array[i].trim());
if (date1.getTime() >= (date2.getTime() + offsetMinutes * 60 * 1000) || date1.getTime() <= (date2.getTime() - offsetMinutes * 60 * 1000)) {
//Here we are
}
}
}