[英]Comparing two Time in Strings
我想比较字符串:
开始时间:10:00结束时间:12:00
实际上,有一个包含我的值和结束时间数组的开始时间数组。 在这种情况下,它的结构如下:
StartTimes[0] = "10:00"
EndTimes[0] = "12:00"
什么是最好的方法(使用java)来找出时间之间的持续时间。 开始时间始终在结束时间之前。 我应该尝试使用正则表达式按分钟和小时分隔字符串,然后解析小时并解析分钟,比较,然后使用该信息确定差异,还是他们的方法来比较java中的时间? 请注意,这些时间是24小时格式,因此对于前者。 下午1:00将显示为13:00。
您可以使用找到持续时间
String startTime = "10:00";
String endTime = "12:00";
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
Date d1 = sdf.parse(startTime);
Date d2 = sdf.parse(endTime);
long elapsed = d2.getTime() - d1.getTime();
System.out.println(elapsed);
我没有计算机可以尝试这个,但是你可以在Java 8的新java.time包中做这样的事情。不要把新的java.time与臭名昭着的老java.util混淆。与Java捆绑的Date和.Calendar类。
LocalTime start = LocalTime.parse( "11:00" );
LocalTime stop = LocalTime.parse( "14:00" );
Duration duration = Duration.between( start, stop );
使用split方法拆分2次,然后从那里计算并解析持续时间:
你问题的样本:
String StartTimes = "10:00";
String EndTimes = "12:00";
String startTimeParse[] = StartTimes.split(":");
String endTimeParse[] = EndTimes.split(":");
int firstHour = Integer.parseInt(startTimeParse[0]);
int firstMinute = Integer.parseInt(startTimeParse[1]);
int secondHour = Integer.parseInt(endTimeParse[0]);
int secondMinute = Integer.parseInt(endTimeParse[1]);
int durattionHour = secondHour - firstHour;
int durattionMinutes = secondMinute - firstMinute;
System.out.println("Duration : " +durattionHour+":"+durattionMinutes );
没有这样的比较方法。
你可以使用':'分割时间字符串。 然后将小时和分钟解析为整数。 然后计算持续时间。
int parseTimeString(String s) {
String[] t = s.split(":");
return Integer.parseInt(t[0]) * 60 + Integer.parseInt(t[1]); // minutes since 00:00
}
int durationInMinute = parseTimeString(EndTimes[0]) - parseTimeString(StartTimes[0]);
您应该创建一个日期(现在)并在其中添加小时,分钟。 获得很长时间并计算持续时间。
Date now = new Date();
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(timezone));
Calendar.setTime(now);
calendar.add(Calendar.Hour, 12);
calendar.add(Calendar.MINUTE, 00);
Date start = calendar.getTime();
calendar.add(Calendar.Hour, 10);
calendar.add(Calendar.MINUTE, 00);
Date end = calendar.getTime();
try {
// in milliseconds
long diff = d2.getTime() - d1.getTime();
long diffMinutes = diff / (60 * 1000) % 60;
long diffHours = diff / (60 * 60 * 1000) % 24;
System.out.print(diffHours + " hours, ");
System.out.print(diffMinutes + " minutes, ");
} catch (Exception e) {
e.printStackTrace();
}
您可以使用java.text.SimpleDateFormat和java.util.concurrent.TimeUnit来帮助您解析,比较,格式化为所需的格式。
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
Date date1 = format.parse(StartTimes[i]);
Date date2 = format.parse(EndTimes[i]);
long millis = date2.getTime() - date1.getTime();
String hourminute = String.format("%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)));
System.out.println(hourminute);
完整的代码可能是这样的:
import java.text.SimpleDateFormat;
import java.util.concurrent.TimeUnit;
import java.util.Date;
class TimeCompare
{
public static void main (String[] args) throws java.lang.Exception
{
String[] StartTimes = {"10:00", "7:00"};
String[] EndTimes = {"12:00", "14:56"};
for (int i=0; i<StartTimes.length; i++){
if (StartTimes!=null && StartTimes.length>0 && EndTimes!=null &&EndTimes.length>0){
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
Date date1 = format.parse(StartTimes[i]);
Date date2 = format.parse(EndTimes[i]);
long millis = date2.getTime() - date1.getTime();
String hourminute = String.format("%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)));
System.out.println(hourminute);
}
}
}
}
来源:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.