时间将保存为字符串,有没有办法将字符串转换为时间,然后检查它是否等于或大于当前时间,或者是否小于当前时间?
对不起,如果这已经被问过很多次了!
这是将字符串转换为日期格式的方法:
我以为你使用yyyy-MM-dd HH:mm:ss
格式
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd, HH:mm:ss");
formatter.setLenient(false);
String oldTime = "2012-07-11 10:55:21";
Date oldDate = formatter.parse(oldTime);
这就是您获取当前时间的方式
Calendar c = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentDate = df.format(c.getTime());
最后,本教程将向您展示如何在 java 中比较日期
时间是保存为字符串形式的时间戳,还是实际的字符串?如果是时间戳,您始终可以执行以下操作:
long timestamp = Long.parseLong(stringTimestamp);
其他答案是正确的但已过时。请改用 java.time 类。
LocalTime
LocalTime
类代表一天中的时间。
LocalTime input = LocalTime.parse( "20:15" );
要获取当前时间,请指定时区。对于任何给定的时刻,一天中的时间因时区而异。
ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalTime now = LocalTime.now( zoneId );
您可以使用equals
、compareTo
、isBefore
和isAfter
方法进行比较。
Boolean input isAfterNow = input.isAfter( now );
您可以使用 24 小时制标准 ISO 8601 格式生成一个字符串来表示这个时间值HH:MM:SS.SSSSSSSSS
。只要打电话toString
。
String output = now.toString();
java.time框架内置于 Java 8 及更高版本中。这些类取代了旧的麻烦的日期时间类,例如java.util.Date
, .Calendar
, & java.text.SimpleDateFormat
。
现在处于维护模式的Joda-Time项目建议迁移到 java.time。
要了解更多信息,请参阅Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。
许多 java.time 功能在 ThreeTen-Backport 中向后移植到 Java 6 和 7,并在ThreeTenABP中进一步适应Android。
ThreeTen -Extra项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。
使用 Java SimpleDateFormat 类将 String 转换为 Date 并从那里进行比较。
String raw = "July 13 2012 08:43:12";
Date parsedDate= new SimpleDateFormat("MMMM d yyyy HH:mm:ss", Locale.ENGLISH).parse(raw);
Date currentDate = new Date();
boolean isafter = parsedDate.after(currentDate);