joh*_*ohn 12 java string calendar date
我有两个日期的字符串格式如下 -
String startDate = "2014/09/12 00:00";
String endDate = "2014/09/13 00:00";
Run Code Online (Sandbox Code Playgroud)
我想确保startDate应该小于endDate.startDate不应大于endDate.
如何比较这两个日期并相应地返回布尔值?
Mak*_*oto 33
将它们转换为实际Date对象,然后调用before.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd h:m");
System.out.println(sdf.parse(startDate).before(sdf.parse(endDate)));
Run Code Online (Sandbox Code Playgroud)
回想一下,parse抛出一个ParseException,所以你应该在这个代码块中捕获它,或者声明它作为方法签名的一部分被抛出.
这是一个完全有效的演示.有关日期格式,请参阅 - http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Dating {
public static void main(String[] args) {
String startDate = "2014/09/12 00:00";
String endDate = "2014/09/13 00:00";
try {
Date start = new SimpleDateFormat("yyyy/MM/dd HH:mm", Locale.ENGLISH)
.parse(startDate);
Date end = new SimpleDateFormat("yyyy/MM/dd HH:mm", Locale.ENGLISH)
.parse(endDate);
System.out.println(start);
System.out.println(end);
if (start.compareTo(end) > 0) {
System.out.println("start is after end");
} else if (start.compareTo(end) < 0) {
System.out.println("start is before end");
} else if (start.compareTo(end) == 0) {
System.out.println("start is equal to end");
} else {
System.out.println("Something weird happened...");
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用现代java.time类LocalDateTime通过使用 定义格式化模式DateTimeFormatter并通过调用 进行比较来将输入解析为对象isBefore。
现代方法使用java.time类。
定义格式模式以匹配您的输入。
解析为LocalDateTime对象,因为您的输入缺少时区或 UTC 偏移量的指示符。
String startInput = "2014/09/12 00:00";
String stopInput = "2014/09/13 00:00";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu/MM/dd HH:mm" );
LocalDateTime start = LocalDateTime.parse( startInput , f ) ;
LocalDateTime stop = LocalDateTime.parse( stopInput , f ) ;
boolean isBefore = start.isBefore( stop ) ;
Run Code Online (Sandbox Code Playgroud)
转储到控制台。
System.out.println( start + " is before " + stop + " = " + isBefore );
Run Code Online (Sandbox Code Playgroud)
2014-09-12T00:00 早于 2014-09-13T00:00 = true
该java.time框架是建立在Java 8和更高版本。这些类取代了麻烦的旧的遗留日期时间类,例如java.util.Date, Calendar, & SimpleDateFormat。
要了解更多信息,请参阅Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。规范是JSR 310。
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
您可以直接与您的数据库交换java.time对象。使用符合JDBC 4.2或更高版本的JDBC 驱动程序。不需要字符串,不需要类。java.sql.*
从哪里获得 java.time 类?
该ThreeTen-额外项目与其他类扩展java.time。该项目是未来可能添加到 java.time 的试验场。你可能在这里找到一些有用的类,比如Interval,YearWeek,YearQuarter,和更多。
| 归档时间: |
|
| 查看次数: |
70625 次 |
| 最近记录: |