检查时间设置是否大于当前时间?

时间:2012-07-13 00:15:29

标签: android

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

很抱歉,如果之前已多次询问过这个问题!

4 个答案:

答案 0 :(得分: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());

最后这个tutorial将向您展示如何比较java中的日期

答案 1 :(得分:1)

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

long timestamp = Long.parseLong(stringTimestamp);

答案 2 :(得分: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);

答案 3 :(得分:0)

其他答案是正确但过时的。请改用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小时制HH:MM:SS.SSSSSSSSS生成一个字符串,以标准ISO 8601格式表示此时间值。只需致电toString

String output = now.toString();

java.time

java.time框架内置于Java 8及更高版本中。这些类取代了旧的麻烦日期时间类,例如java.util.Date.Calendar和& java.text.SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。

大部分java.time功能都被反向移植到Java 6& ThreeTen-Backport中的7,并进一步适应Android中的ThreeTenABP

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。