Adding code for BAEL-1845 (#4524)
This commit is contained in:
parent
548d7abc82
commit
550806ab32
@ -0,0 +1,190 @@
|
|||||||
|
package com.baeldung.jodatime;
|
||||||
|
|
||||||
|
import org.joda.time.*;
|
||||||
|
import org.joda.time.format.DateTimeFormat;
|
||||||
|
import org.joda.time.format.DateTimeFormatter;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.TimeZone;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
public class JodaTimeUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDateTimeRepresentation() {
|
||||||
|
|
||||||
|
DateTimeZone.setDefault(DateTimeZone.forID("Europe/Bucharest"));
|
||||||
|
|
||||||
|
// representing current date and time
|
||||||
|
LocalDate currentDate = LocalDate.now();
|
||||||
|
LocalTime currentTime = LocalTime.now();
|
||||||
|
LocalDateTime currentLocalDateTime = LocalDateTime.now();
|
||||||
|
|
||||||
|
LocalDateTime currentDateTimeFromJavaDate = new LocalDateTime(new Date());
|
||||||
|
Date currentJavaDate = currentDateTimeFromJavaDate.toDate();
|
||||||
|
|
||||||
|
// representing custom date and time
|
||||||
|
Date oneMinuteAgoDate = new Date(System.currentTimeMillis() - (60 * 1000));
|
||||||
|
Instant oneMinutesAgoInstant = new Instant(oneMinuteAgoDate);
|
||||||
|
|
||||||
|
DateTime customDateTimeFromInstant = new DateTime(oneMinutesAgoInstant);
|
||||||
|
DateTime customDateTimeFromJavaDate = new DateTime(oneMinuteAgoDate);
|
||||||
|
DateTime customDateTimeFromString = new DateTime("2018-05-05T10:11:12.123");
|
||||||
|
DateTime customDateTimeFromParts = new DateTime(2018, 5, 5, 10, 11, 12, 123);
|
||||||
|
|
||||||
|
// parsing
|
||||||
|
DateTime parsedDateTime = DateTime.parse("2018-05-05T10:11:12.123");
|
||||||
|
assertEquals("2018-05-05T10:11:12.123+03:00", parsedDateTime.toString());
|
||||||
|
|
||||||
|
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");
|
||||||
|
DateTime parsedDateTimeUsingFormatter = DateTime.parse("05/05/2018 10:11:12", dateTimeFormatter);
|
||||||
|
assertEquals("2018-05-05T10:11:12.000+03:00", parsedDateTimeUsingFormatter.toString());
|
||||||
|
|
||||||
|
// Instant
|
||||||
|
Instant instant = new Instant();
|
||||||
|
Instant.now();
|
||||||
|
|
||||||
|
Instant instantFromString = new Instant("2018-05-05T10:11:12");
|
||||||
|
Instant instantFromDate = new Instant(oneMinuteAgoDate);
|
||||||
|
Instant instantFromTimestamp = new Instant(System.currentTimeMillis() - (60 * 1000));
|
||||||
|
Instant parsedInstant = Instant.parse("05/05/2018 10:11:12", dateTimeFormatter);
|
||||||
|
|
||||||
|
Instant instantNow = Instant.now();
|
||||||
|
Instant oneMinuteAgoInstant = new Instant(oneMinuteAgoDate);
|
||||||
|
|
||||||
|
// epochMilli and epochSecond
|
||||||
|
long milliesFromEpochTime = System.currentTimeMillis();
|
||||||
|
long secondsFromEpochTime = milliesFromEpochTime / 1000;
|
||||||
|
Instant instantFromEpochMilli = Instant.ofEpochMilli(milliesFromEpochTime);
|
||||||
|
Instant instantFromEpocSeconds = Instant.ofEpochSecond(secondsFromEpochTime);
|
||||||
|
|
||||||
|
// convert Instants
|
||||||
|
DateTime dateTimeFromInstant = instant.toDateTime();
|
||||||
|
Date javaDateFromInstant = instant.toDate();
|
||||||
|
|
||||||
|
int year = instant.get(DateTimeFieldType.year());
|
||||||
|
int month = instant.get(DateTimeFieldType.monthOfYear());
|
||||||
|
int day = instant.get(DateTimeFieldType.dayOfMonth());
|
||||||
|
int hour = instant.get(DateTimeFieldType.hourOfDay());
|
||||||
|
|
||||||
|
// Duration, Period, Instant
|
||||||
|
long currentTimestamp = System.currentTimeMillis();
|
||||||
|
long oneHourAgo = currentTimestamp - 24*60*1000;
|
||||||
|
|
||||||
|
Duration duration = new Duration(oneHourAgo, currentTimestamp);
|
||||||
|
Instant.now().plus(duration);
|
||||||
|
|
||||||
|
long durationInDays = duration.getStandardDays();
|
||||||
|
long durationInHours = duration.getStandardHours();
|
||||||
|
long durationInMinutes = duration.getStandardMinutes();
|
||||||
|
long durationInSeconds = duration.getStandardSeconds();
|
||||||
|
long durationInMilli = duration.getMillis();
|
||||||
|
|
||||||
|
// converting between classes
|
||||||
|
DateTimeUtils.setCurrentMillisFixed(currentTimestamp);
|
||||||
|
LocalDateTime currentDateAndTime = LocalDateTime.now();
|
||||||
|
|
||||||
|
assertEquals(currentTimestamp, currentDateAndTime.toDate().getTime());
|
||||||
|
assertEquals(new DateTime(currentTimestamp), currentDateAndTime.toDateTime());
|
||||||
|
assertEquals(new LocalDate(currentTimestamp), currentDateAndTime.toLocalDate());
|
||||||
|
assertEquals(new LocalTime(currentTimestamp), currentDateAndTime.toLocalTime());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testJodaInstant() {
|
||||||
|
|
||||||
|
Date oneMinuteAgoDate = new Date(System.currentTimeMillis() - (60 * 1000));
|
||||||
|
|
||||||
|
Instant instantNow = Instant.now();
|
||||||
|
Instant oneMinuteAgoInstant = new Instant(oneMinuteAgoDate);
|
||||||
|
|
||||||
|
assertTrue(instantNow.compareTo(oneMinuteAgoInstant) > 0);
|
||||||
|
assertTrue(instantNow.isAfter(oneMinuteAgoInstant));
|
||||||
|
assertTrue(oneMinuteAgoInstant.isBefore(instantNow));
|
||||||
|
assertTrue(oneMinuteAgoInstant.isBeforeNow());
|
||||||
|
assertFalse(oneMinuteAgoInstant.isEqual(instantNow));
|
||||||
|
|
||||||
|
LocalDateTime localDateTime = new LocalDateTime("2018-02-01");
|
||||||
|
Period period = new Period().withMonths(1);
|
||||||
|
LocalDateTime datePlusPeriod = localDateTime.plus(period);
|
||||||
|
|
||||||
|
Instant startInterval1 = new Instant("2018-05-05T09:00:00.000");
|
||||||
|
Instant endInterval1 = new Instant("2018-05-05T11:00:00.000");
|
||||||
|
Interval interval1 = new Interval(startInterval1, endInterval1);
|
||||||
|
|
||||||
|
Instant startInterval2 = new Instant("2018-05-05T10:00:00.000");
|
||||||
|
Instant endInterval2 = new Instant("2018-05-05T11:00:00.000");
|
||||||
|
Interval interval2 = new Interval(startInterval2, endInterval2);
|
||||||
|
|
||||||
|
Instant startInterval3 = new Instant("2018-05-05T11:00:00.000");
|
||||||
|
Instant endInterval3 = new Instant("2018-05-05T13:00:00.000");
|
||||||
|
Interval interval3 = new Interval(startInterval3, endInterval3);
|
||||||
|
|
||||||
|
Interval overlappingInterval = interval1.overlap(interval2);
|
||||||
|
Interval notOverlappingInterval = interval1.overlap(interval3);
|
||||||
|
|
||||||
|
assertTrue(overlappingInterval.isEqual(new Interval(new Instant("2018-05-05T10:00:00.000"), new Instant("2018-05-05T11:00:00.000"))));
|
||||||
|
assertNotNull(overlappingInterval);
|
||||||
|
|
||||||
|
interval1.abuts(interval3);
|
||||||
|
assertTrue(interval1.abuts(new Interval(new Instant("2018-05-05T11:00:00.000"), new Instant("2018-05-05T13:00:00.000"))));
|
||||||
|
|
||||||
|
interval1.gap(interval2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDateTimeOperations() {
|
||||||
|
|
||||||
|
DateTimeUtils.setCurrentMillisFixed(1529612783288L);
|
||||||
|
DateTimeZone.setDefault(DateTimeZone.UTC);
|
||||||
|
|
||||||
|
LocalDateTime currentLocalDateTime = LocalDateTime.now();
|
||||||
|
assertEquals("2018-06-21T20:26:23.288", currentLocalDateTime.toString());
|
||||||
|
|
||||||
|
LocalDateTime nextDayDateTime = currentLocalDateTime.plusDays(1);
|
||||||
|
assertEquals("2018-06-22T20:26:23.288", nextDayDateTime.toString());
|
||||||
|
|
||||||
|
Period oneMonth = new Period().withMonths(1);
|
||||||
|
LocalDateTime nextMonthDateTime = currentLocalDateTime.plus(oneMonth);
|
||||||
|
assertEquals("2018-07-21T20:26:23.288", nextMonthDateTime.toString());
|
||||||
|
|
||||||
|
LocalDateTime previousDayLocalDateTime = currentLocalDateTime.minusDays(1);
|
||||||
|
assertEquals("2018-06-20T20:26:23.288", previousDayLocalDateTime.toString());
|
||||||
|
|
||||||
|
LocalDateTime currentDateAtHour10 = currentLocalDateTime
|
||||||
|
.withHourOfDay(0)
|
||||||
|
.withMinuteOfHour(0)
|
||||||
|
.withSecondOfMinute(0)
|
||||||
|
.withMillisOfSecond(0);
|
||||||
|
assertEquals("2018-06-21T00:00:00.000", currentDateAtHour10.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTimezones() {
|
||||||
|
|
||||||
|
System.getProperty("user.timezone");
|
||||||
|
DateTimeZone.getAvailableIDs();
|
||||||
|
// DateTimeZone.setDefault(DateTimeZone.forID("Europe/Bucharest"));
|
||||||
|
|
||||||
|
DateTimeUtils.setCurrentMillisFixed(1529612783288L);
|
||||||
|
|
||||||
|
DateTime dateTimeInChicago = new DateTime(DateTimeZone.forID("America/Chicago"));
|
||||||
|
assertEquals("2018-06-21T15:26:23.288-05:00", dateTimeInChicago.toString());
|
||||||
|
|
||||||
|
DateTime dateTimeInBucharest = new DateTime(DateTimeZone.forID("Europe/Bucharest"));
|
||||||
|
assertEquals("2018-06-21T23:26:23.288+03:00", dateTimeInBucharest.toString());
|
||||||
|
|
||||||
|
LocalDateTime localDateTimeInChicago = new LocalDateTime(DateTimeZone.forID("America/Chicago"));
|
||||||
|
assertEquals("2018-06-21T15:26:23.288", localDateTimeInChicago.toString());
|
||||||
|
|
||||||
|
DateTime convertedDateTime = localDateTimeInChicago.toDateTime(DateTimeZone.forID("Europe/Bucharest"));
|
||||||
|
assertEquals("2018-06-21T15:26:23.288+03:00", convertedDateTime.toString());
|
||||||
|
|
||||||
|
Date convertedDate = localDateTimeInChicago.toDate(TimeZone.getTimeZone("Europe/Bucharest"));
|
||||||
|
assertEquals("Thu Jun 21 15:26:23 EEST 2018", convertedDate.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user