我提供了一个毫秒数据1473080981L
,它的日期应该是:September 5, 2016 9:50 PM
. 我正在做单元测试,这是我第一次玩JUnit。到目前为止,我注意到的是,每次我打电话时:
DateTime dateTime = new DateTime();
dateTime.withMillis(1473080981L)
它仍然返回正确的日期,但目前,在撰写本文时,现在是晚上 10:00,此方法调用产生September 5, 2016 10:00 PM
. DateTime不尊重我设置的时间。
这是正确的行为吗?有没有办法通过设置我自己预定义的选定日期时间来实例化 DateTime?
这是我的单元测试(请忍受它毫无意义,我正在学习单元测试):
String testDate = "September 5, 2016 9:50 PM"; // MMMM dd, yyyy K:mm a
String testDateResult1 = DateTimeFormatter.format(dateTime, DateTimeFormatter.FORMAT_DEFAULT_DATE_TIME_12);
String testDateResult2 = DateTimeFormatter.format(thisDay , DateTimeFormatter.FORMAT_DEFAULT_DATE_TIME_12);
assertTrue(testDate.compareTo(testDateResult1) == 0);
assertTrue(testDate.compareTo(testDateResult2) == 0);
我的DateTimeFormatter看起来像这样:
public static String format(@NonNull DateTime dateTime, String validFormat) {
org.joda.time.format.DateTimeFormatter dateTimeFormat = DateTimeFormat.forPattern(validFormat);
return dateTimeFormat.print(dateTime);
}
public static String format(long dateToMillis, String validFormat) {
org.joda.time.format.DateTimeFormatter dateTimeFormat = DateTimeFormat.forPattern(validFormat);
DateTime dateTime = new DateTime();
dateTime.withMillis(dateToMillis);
return dateTimeFormat.print(dateTime);
}
谢谢!