时间将保存为字符串,有没有办法将字符串转换为时间,然后检查它是否等于或大于当前时间,或者它是否小于当前时间?
很抱歉,如果之前已多次询问过这个问题!
答案 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 );
您可以使用equals
,compareTo
,isBefore
和isAfter
方法进行比较。
Boolean input isAfterNow = input.isAfter( now );
您可以使用24小时制HH:MM:SS.SSSSSSSSS
生成一个字符串,以标准ISO 8601格式表示此时间值。只需致电toString
。
String output = now.toString();
java.time框架内置于Java 8及更高版本中。这些类取代了旧的麻烦日期时间类,例如java.util.Date
,.Calendar
和& java.text.SimpleDateFormat
。
现在位于Joda-Time的maintenance mode项目建议迁移到java.time。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。
大部分java.time功能都被反向移植到Java 6& ThreeTen-Backport中的7,并进一步适应Android中的ThreeTenABP。
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。