Я предоставляю миллисекундные данные 1473080981L
, которые должны датироваться: September 5, 2016 9:50 PM
. Я выполняю модульное тестирование, и это был мой первый опыт работы с JUnit. Что я заметил до сих пор, так это то, что каждый раз, когда я звоню:
DateTime dateTime = new DateTime();
dateTime.withMillis(1473080981L)
Он по-прежнему возвращает правильную дату, но в настоящее время, на момент написания этой статьи, сейчас 22: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);
}
Спасибо!