sli*_*ing 29 java comparison time
我有时间,hh:mm用户必须以该格式输入.
但是,我想比较时间(例如11:22)是在上午10点到下午6点之间吗?但我如何比较呢?
Ada*_*kin 54
Java(还)没有一个好的内置Time类(它有一个用于JDBC查询,但这不是你想要的).
仅使用内置的Java API,您就会遇到java.util.Date.您可以使用SimpleDateFormat来解析时间,然后使用Date比较函数来查看它是在其他时间之前还是之后:
SimpleDateFormat parser = new SimpleDateFormat("HH:mm");
Date ten = parser.parse("10:00");
Date eighteen = parser.parse("18:00");
try {
Date userDate = parser.parse(someOtherDate);
if (userDate.after(ten) && userDate.before(eighteen)) {
...
}
} catch (ParseException e) {
// Invalid date was entered
}
Run Code Online (Sandbox Code Playgroud)
或者您可以使用一些字符串操作,也许是正则表达式来提取小时和分钟部分,将它们转换为数字并进行数值比较:
Pattern p = Pattern.compile("(\d{2}):(\d{2})");
Matcher m = p.matcher(userString);
if (m.matches() ) {
String hourString = m.group(1);
String minuteString = m.group(2);
int hour = Integer.parseInt(hourString);
int minute = Integer.parseInt(minuteString);
if (hour >= 10 && hour <= 18) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
这完全取决于你想要完成的事情.
ass*_*ias 14
使用Java 8+,您可以使用新的Java时间API:
解析时间:
LocalTime time = LocalTime.parse("11:22")
Run Code Online (Sandbox Code Playgroud)做日期比较,你有- LocalTime::isBefore并LocalTime::isAfter注意这些方法是严格的
所以你的问题就像这样简单:
public static void main(String[] args) {
LocalTime time = LocalTime.parse("11:22");
System.out.println(isBetween(time, LocalTime.of(10, 0), LocalTime.of(18, 0)));
}
public static boolean isBetween(LocalTime candidate, LocalTime start, LocalTime end) {
return !candidate.isBefore(start) && !candidate.isAfter(end); // Inclusive.
}
Run Code Online (Sandbox Code Playgroud)
对于包容性开始但是独占结束(半开),请使用此行.
return !candidate.isBefore(start) && candidate.isBefore(end); // Exclusive of end.
Run Code Online (Sandbox Code Playgroud)
例:
import java.util.*;
import java.lang.Object;
import java.text.Collator;
public class CurrentTime{
public class CurrentTime
{
public static void main( String[] args )
{
Calendar calendar = new GregorianCalendar();
String am_pm;
int hour = calendar.get( Calendar.HOUR );
int minute = calendar.get( Calendar.MINUTE );
// int second = calendar.get(Calendar.SECOND);
if( calendar.get( Calendar.AM_PM ) == 0 ){
am_pm = "AM";
if(hour >=10)
System.out.println( "welcome" );
}
else{
am_pm = "PM";
if(hour<6)
System.out.println( "welcome" );
}
String time = "Current Time : " + hour + ":" + minute + " " + am_pm;
System.out.println( time );
}
}
Run Code Online (Sandbox Code Playgroud)