我有一个时间字符串,如" 15:30"我想将该字符串与当前时间进行比较。 请提出一些简单的建议 以及如何以小时分钟格式获取当前时间(" HH:mm")
答案 0 :(得分:8)
LocalTime.now()
.isAfter( LocalTime.parse( "15:30" ) )
您应该反思:如何将该字符串转换为时间值。您不会通过将数字转换为字符串来尝试数学。日期时间值也是如此。
避免使用旧的捆绑类java.util.Date和.Calendar,因为它们在设计和实现方面都非常麻烦,存在缺陷。它们被java.time package中的新Java 8取代。而java.time的灵感来自Joda-Time。
java.time和Joda-Time都提供了一个类来捕获没有任何日期到时区的时间:LocalTime
。
使用Java内置的java.time类,特别是LocalTime
。获取当地时区的当前时间。根据输入字符串构造一个时间。与isBefore
,isAfter
或isEqual
方法进行比较。
LocalTime now = LocalTime.now();
LocalTime limit = LocalTime.parse( "15:30" );
Boolean isLate = now.isAfter( limit );
最好指定所需/预期的时区,而不是隐式依赖JVM的当前默认时区。
ZoneId z = ZoneId.of( "Pacific/Auckland" ) ;
LocalTime now = LocalTime.now( z ); // Explicitly specify the desired/expected time zone.
LocalTime limit = LocalTime.parse( "15:30" );
Boolean isLate = now.isAfter( limit );
在这种情况下,使用Joda-Time库的代码几乎与上面针对java.time看到的代码相同。
请注意Joda-Time项目现在位于maintenance mode,团队建议迁移到java.time类。
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。
答案 1 :(得分:6)
像这样正常比较字符串:
String currentTime = new SimpleDateFormat("HH:mm").format(new Date());
String timeToCompare = "15:30";
boolean x = currentTime.equals(timeToCompare);
如果时间相同,则x true
如果不是x则为false
答案 2 :(得分:3)
以下会得到时间。你可以用它来比较
String currentTime=new SimpleDateFormat("HH:mm").format(new Date());
答案 3 :(得分:0)
试试这个
public static String compareTime(String d) {
if (null == d)
return "";
try {
SimpleDateFormat sdf= new SimpleDateFormat("HH:mm");
d = sdf.format(new Date());
} catch (Exception e) {
e.printStackTrace();
}
return d;
}
然后你可以与你的字符串进行比较
答案 4 :(得分:0)
以下是我在当前时间之前和之后进行比较的示例:
MainActivity.java
Button search = (Button) findViewById(R.id.searchBus);
SimpleDateFormat sdfDate = new SimpleDateFormat("HH:mm");
String limit = "23:00";
Date limitBus=null;
try {
limitBus = sdfDate.parse(limit);
} catch (ParseException e) {
e.printStackTrace();
}
String start = "07:15";
Date startBus=null;
try {
startBus = sdfDate.parse(start);
} catch (ParseException e) {
e.printStackTrace();
}
String user_time = getCurrentTimeStamp();
Date now = null;
try {
now = sdfDate.parse(user_time);
} catch (ParseException e) {
e.printStackTrace();
}
if (now.after(limitBus)||now.before(startBus)){
Toast.makeText(this, "Bus Operation Hours : 7:15AM - 11.00PM", Toast.LENGTH_LONG).show();
search.setEnabled(false);
}
else
{
search.setEnabled(true);
}
//get current time method
public static String getCurrentTimeStamp() {
SimpleDateFormat sdfDate = new SimpleDateFormat("HH:mm");//dd/MM/yyyy
Date now = new Date();
String strDate = sdfDate.format(now);
return strDate;
}
答案 5 :(得分:0)
所以我的解决方案有点不同,它首先创建一个具有当前时间的时钟,然后测试用户定义的小时。
public void TextClockWindow() {
this.pack();
javax.swing.Timer t = new javax.swing.Timer(1000, (ActionEvent e) -> {
Calendar calendar = new GregorianCalendar();
String am_pm;
calendar.setTimeZone(TimeZone.getDefault());
Calendar now = Calendar.getInstance();
int h = now.get(Calendar.HOUR_OF_DAY);
int m = now.get(Calendar.MINUTE);
int s = now.get(Calendar.SECOND);
if (calendar.get(Calendar.AM_PM) == 0) {
am_pm = "AM";
} else {
am_pm = "PM";
} // Code to Determine whether the time is AM or PM
Clock.setText("" + h + ":" + m + " " + am_pm);
if(h < 5) { //int here which tests agaisnt the hour evwery second
System.out.println("Success");
} else {
System.out.println("Failure");
}
});
t.start();
}
答案 6 :(得分:0)
此代码将检查用户输入的时间与当前系统时间,并将返回时差设为长值。
public long getTimeDifferenceInMillis (String dateTime) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long currentTime = new Date().getTime();
long endTime = 0;
try {
//Parsing the user Inputed time ("yyyy-MM-dd HH:mm:ss")
endTime = dateFormat.parse(dateTime).getTime();
} catch (ParseException e) {
e.printStackTrace();
return 0;
}
if (endTime > currentTime)
return endTime - currentTime;
else
return 0;
}
用户应以“ yyyy-MM-dd HH:mm:ss” 格式打发时间。