我得到两个日期作为字符串值,我想检查开始时间早于结束时间.我比较它们,因为它没有将它们转换为使用日期SimpleDateFormat,如下所示:
String startTime = "2013-01-02 14:25:56";
String endTime = "2013-01-02 14:30:56";
if(endTime.compareTo(startTime) > 0){
System.out.println("End time is greater than start time");
}
Run Code Online (Sandbox Code Playgroud)
是否真的有必要将它们转换为日期并进行比较?我会错过什么吗?我做对了吗?
所以我使用的dateString1.compareTo(dateString2)是根据每个字符的Unicode值对字符串进行字典比较,并返回一个int.这是一个代码示例.
String dateString1 = "05-12-2012";
String dateString2 = "05-13-2012";
if (dateString1.compareTo(dateString2) <=0){
System.out.println("dateString1 is an earlier date than dateString2");
}
Run Code Online (Sandbox Code Playgroud)
这是比较Java中日期的错误方法吗?
在我的测试中,我没有遇到过我意外结果的情况.我真的不想从字符串中创建一个Date对象,如果我不需要,因为我在一个长时间运行的循环中这样做.
忍者编辑
从下面的答案中收集如果将日期作为字符串进行比较,如果它是yyyyMMdd格式的,但是如果它是任何其他格式,则显然会导致错误.
我实际上yyyyMMdd在实际代码中将日期字符串作为格式.(我在上面给出的示例中输入了错误的格式.)所以现在,我将保留代码,并添加几行注释以证明我的决定.
但我现在看到比较像这样的字符串是非常有限的,如果dba决定改变日期格式,我将遇到错误,我不认为发生了.
以String格式比较两个日期的最简单方法是什么?我需要知道是否date1在之前/之后date2.
String date1 = "2015-12-01";
String date2 = "2015-12-31";
Run Code Online (Sandbox Code Playgroud) 我有格式化的日期对象
2011/06/13 17:52:20
Run Code Online (Sandbox Code Playgroud)
并作为字符串返回.我如何将这与另一个格式相同的日期进行比较.我想确定哪一个大于,小于或等于我正在形成的条件语句.
如果可能已经存在执行此操作的框架,则无需重新发明轮子(或制作多个案例)
谢谢!