package net.time4j; import net.time4j.tz.OffsetSign; import net.time4j.tz.TZID; import net.time4j.tz.Timezone; import net.time4j.tz.ZonalOffset; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import java.text.ParseException; import java.util.Locale; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @RunWith(JUnit4.class) public class PlatformFormatTest { @Test public void printStdDate() { PlainDate date = PlainDate.of(2014, 5, 31); assertThat( PlainDate.formatter("MM/dd/yyyy", Platform.PATTERN, Locale.US).format(date), is("05/31/2014")); } @Test public void parseStdDate() throws ParseException { PlainDate date = PlainDate.of(2014, 5, 31); assertThat( PlainDate.formatter("MM/dd/yyyy", Platform.PATTERN, Locale.US).parse("05/31/2014"), is(date)); } @Test public void printOldDate() { PlainDate date = PlainDate.of(1425, 5, 31); assertThat( PlainDate.formatter("MM/dd/yyyy", Platform.PATTERN, Locale.US).format(date), is("05/31/1425")); } @Test public void parseOldDate() throws ParseException { PlainDate date = PlainDate.of(1425, 5, 31); assertThat( PlainDate.formatter("MM/dd/yyyy", Platform.PATTERN, Locale.US).parse("05/31/1425"), is(date)); } @Test public void printMomentWithOffset() { TZID tzid = ZonalOffset.ofHoursMinutes(OffsetSign.AHEAD_OF_UTC, 5, 30); String expected = "01.01.1970 05:30 AM GMT+05:30"; assertThat( Moment.formatter("dd.MM.yyyy hh:mm a z", Platform.PATTERN, Locale.ENGLISH, tzid).format(Moment.UNIX_EPOCH), is(expected) ); } @Test public void printMomentInLondon() { Timezone timezone = Timezone.of("Europe/London"); TZID tzid = timezone.getID(); String name = (timezone.isDaylightSaving(Moment.UNIX_EPOCH) ? "BST" : "GMT"); String expected = "01.01.1970 01:00 AM " + name; assertThat( Moment.formatter("dd.MM.yyyy hh:mm a z", Platform.PATTERN, Locale.UK, tzid).format(Moment.UNIX_EPOCH), is(expected) ); } @Test public void parseMomentWithOffset() throws ParseException { TZID tzid = ZonalOffset.ofHoursMinutes(OffsetSign.AHEAD_OF_UTC, 5, 30); String text = "01.01.1970 05:30 AM GMT+05:30"; assertThat( Moment.formatter("dd.MM.yyyy hh:mm a z", Platform.PATTERN, Locale.ENGLISH, tzid).parse(text), is(Moment.UNIX_EPOCH) ); } @Test public void parseMomentInLondon() throws ParseException { TZID tzid = Timezone.of("Europe/London").getID(); String text = "01.01.1970 12:00 AM GMT"; assertThat( Moment.formatter("dd.MM.yyyy hh:mm a z", Platform.PATTERN, Locale.ENGLISH, tzid).parse(text), is(Moment.UNIX_EPOCH) ); } @Test public void printMomentInGermany() throws ParseException { TZID tzid = Timezone.of("Europe/Berlin").getID(); Moment moment = PlainDate.of(2015, 7, 1).atTime(15, 0, 0).inTimezone(tzid); assertThat( Moment.formatter("dd.MM.yyyy HH:mm (zzzz)", Platform.PATTERN, Locale.GERMANY, tzid).format(moment), is("01.07.2015 15:00 (Mitteleuropäische Sommerzeit)") ); } @Test public void parseMomentInGermany() throws ParseException { TZID tzid = Timezone.of("Europe/Berlin").getID(); String text = "01.07.2015 15:00 (Mitteleuropäische Sommerzeit)"; assertThat( Moment.formatter("dd.MM.yyyy HH:mm (zzzz)", Platform.PATTERN, Locale.GERMANY, tzid).parse(text), is(PlainDate.of(2015, 7, 1).atTime(15, 0, 0).inTimezone(tzid)) ); } }