1

时间将保存为字符串,有没有办法将字符串转换为时间,然后检查它是否等于或大于当前时间,或者是否小于当前时间?

对不起,如果这已经被问过很多次了!

4

4 回答 4

4

这是将字符串转换为日期格式的方法:

我以为你使用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 中比较日期

于 2012-07-13T00:36:01.650 回答
1

时间是保存为字符串形式的时间戳,还是实际的字符串?如果是时间戳,您始终可以执行以下操作:

long timestamp = Long.parseLong(stringTimestamp);
于 2012-07-13T00:17:59.167 回答
1

其他答案是正确的但已过时。请改用 java.time 类。

LocalTime

LocalTime类代表一天中的时间。

LocalTime input = LocalTime.parse( "20:15" );

要获取当前时间,请指定时区。对于任何给定的时刻,一天中的时间因时区而异。

ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalTime now = LocalTime.now( zoneId );

您可以使用equalscompareToisBeforeisAfter方法进行比较。

Boolean input isAfterNow = input.isAfter( now );

您可以使用 24 小时制标准 ISO 8601 格式生成一个字符串来表示这个时间值HH:MM:SS.SSSSSSSSS。只要打电话toString

String output = now.toString();

java.time

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 的试验场。

于 2016-08-15T00:24:25.130 回答
0

使用 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);
于 2012-07-13T00:18:34.157 回答