以12小时上午/下午格式查找两次之间的差异
我的程序的一部分需要找出两次之间的最小差异。例如:以12小时上午/下午格式查找两次之间的差异
时间1:11:00
时间2:01:00
的差异应该是2个小时,没有22小时(它不应该不管什么样的顺序时间给出)。现在,假设两次总是不一样的。我有两个字符串和用于存储时代两个整数:
int startTime = 11;
String startTimeType = "AM";
int endTime = 1;
String endTimeType = "PM";
我试图通过采取AM/PM的每个可能的组合硬编码:
startTimeType = "AM", endTimeType = "AM";
startTimeType = "AM", endTimeType = "PM";
startTimeType = "PM", endTimeType = "AM";
startTimeType = "PM", endTimeType = "PM";
例如在组合1(AM/AM),代码为:
int timeDifference = 0;
if (startTimeType.equals("PM")
startTime += 12;
if (endTimeType.equals("PM")
endTime += 12;
if ((startTimeType.equals("AM") && endTimeType.equals("AM"))
{
timeDifference = Math.abs(startTime - endTime);
}
有没有办法做到这一点没有硬编码?
也许if (difference > 12) difference = 24 - difference
?
您可以使用时间库。要么JodaTime或内置java.time
API,如果你有jdk1.8 +:
import java.time.Duration;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
public class TimeDiff {
public static void main(String[] args) {
DateTimeFormatter format = DateTimeFormatter
.ofLocalizedTime(FormatStyle.SHORT);
LocalTime time1 = LocalTime.parse("11:00 AM", format);
LocalTime time2 = LocalTime.parse("01:00 PM", format);
Duration duration = Duration.between(time1, time2);
System.out.println(Math.abs(duration.getSeconds()/3600));
}
}
如果我想在Android Studio中使用此代码,我需要做什么? – 2017-06-02 07:41:54
什么阻止你在Android Studio中使用它? (我不是Android开发人员 - 但如果Android支持Java 8,我不期望任何问题) – 2017-06-02 09:34:15
使用适当的时间/日期时间数据类型.... – 2014-12-13 03:03:17
12 am/12pm是边缘情况下上午12点= 0000未1200。 12pm = 1200,所以你仍然可以+12下午,但只有在校正12am到00小时后。 – Paul 2014-12-13 03:19:32