如果我运行以下程序,它解析引用时间间隔为1秒的两个日期字符串并比较它们:
public static void main(String[] args) throws ParseException {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str3 = "1927-12-31 23:54:07";
String str4 = "1927-12-31 23:54:08";
Date sDt3 = sf.parse(str3);
Date sDt4 = sf.parse(str4);
long ld3 = sDt3.getTime() /1000;
long ld4 = sDt4.getTime() /1000;
System.out.println(ld4-ld3);
}
Run Code Online (Sandbox Code Playgroud)
输出是:
353
为什么ld4-ld3
不1
(正如我所期望的那样,在时间上只有一秒钟的差异),但是353
?
如果我将日期更改为1秒后的时间:
String str3 = "1927-12-31 23:54:08";
String str4 = "1927-12-31 23:54:09";
Run Code Online (Sandbox Code Playgroud)
然后ld4-ld3
会1
.
Java版本:
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04) …
Run Code Online (Sandbox Code Playgroud) 我知道有关于java.util.Date和Joda-Time的问题.但经过一番挖掘后,我找不到关于java.time API(Java 8中新增,JSR 310定义)和Joda-Time之间差异的线程.
我听说Java 8的java.time API比Joda-Time更清洁,可以做得更多.但我找不到比较两者的例子.
如何获得一天的开始时间和结束时间?
这样的代码不准确:
private Date getStartOfDay(Date date) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DATE);
calendar.set(year, month, day, 0, 0, 0);
return calendar.getTime();
}
private Date getEndOfDay(Date date) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DATE);
calendar.set(year, month, day, 23, 59, 59);
return calendar.getTime();
}
Run Code Online (Sandbox Code Playgroud)
它毫不准确到毫秒.
我翻译了一些C#-code到Java和选择JodaTime
的DateTime
类,以取代C#
的System.DateTime
.
在C#
该DateTime
班有一个叫做场MaxValue
和一个叫MinValue
,它返回的最大和最小的可能值,该DateTime
对象可以容纳.
我试图用JodaTime
api 实现同样的目标.我已经阅读了其他帖子的一些建议
这一个:Java等价的.NET DateTime.MinValue,DateTime.Today回答如何使今天的日期JodaTime
,但在回答问题的后半部分时,关于最小值,他们转向Calendar
和Date
同样地,我已经看到了关于将最大化的long值作为构造函数参数传递的建议,但是它被批评为依赖于将来可能会更改的类,因此在API更新之后可能不兼容或准确.
那么,有没有一种正确的方法可以做到这一点?如果没有,有没有一个很好的方法来实现这一目标?
GregorianCalendar的最大值和最小值是多少?
它们是一个常数,如Integer.MAX_VALUE,还是GregorianCalendar.get(BLAH)?
简而言之,如何创建具有最小/最大值的GregorianCalendar实例?