package net.time4j.format.expert;
import net.time4j.ClockUnit;
import net.time4j.Moment;
import net.time4j.PlainDate;
import net.time4j.PlainTime;
import net.time4j.PlainTimestamp;
import net.time4j.SI;
import net.time4j.Weekday;
import net.time4j.format.Attributes;
import net.time4j.format.Leniency;
import net.time4j.tz.OffsetSign;
import net.time4j.tz.ZonalOffset;
import java.text.ParseException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@RunWith(JUnit4.class)
public class Iso8601FormatTest {
@Test
public void printBasicCalendarDate() {
assertThat(
Iso8601Format.BASIC_CALENDAR_DATE.format(
PlainDate.of(2012, 2, 29)),
is("20120229"));
}
@Test
public void parseBasicCalendarDate() throws ParseException {
assertThat(
Iso8601Format.BASIC_CALENDAR_DATE.parse("20120229"),
is(PlainDate.of(2012, 2, 29)));
}
@Test
public void printExtendedCalendarDate() {
assertThat(
Iso8601Format.EXTENDED_CALENDAR_DATE.format(
PlainDate.of(2012, 2, 29)),
is("2012-02-29"));
}
@Test
public void parseExtendedCalendarDate() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_CALENDAR_DATE.parse("2012-02-29"),
is(PlainDate.of(2012, 2, 29)));
}
@Test
public void printBasicOrdinalDate() {
assertThat(
Iso8601Format.BASIC_ORDINAL_DATE.format(
PlainDate.of(2014, 365)),
is("2014365"));
}
@Test
public void parseBasicOrdinalDate() throws ParseException {
assertThat(
Iso8601Format.BASIC_ORDINAL_DATE.parse("2014365"),
is(PlainDate.of(2014, 365)));
}
@Test
public void printExtendedOrdinalDate32() {
assertThat(
Iso8601Format.EXTENDED_ORDINAL_DATE.format(
PlainDate.of(2014, 32)),
is("2014-032"));
}
@Test
public void parseExtendedOrdinalDate32() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_ORDINAL_DATE.parse("2014-032"),
is(PlainDate.of(2014, 32)));
}
@Test
public void printExtendedOrdinalDate365() {
assertThat(
Iso8601Format.EXTENDED_ORDINAL_DATE.format(
PlainDate.of(2014, 365)),
is("2014-365"));
}
@Test
public void parseExtendedOrdinalDate365() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_ORDINAL_DATE.parse("2014-365"),
is(PlainDate.of(2014, 365)));
}
@Test
public void printBasicWeekDate() {
assertThat(
Iso8601Format.BASIC_WEEK_DATE.format(
PlainDate.of(2014, 4, Weekday.MONDAY)),
is("2014W041"));
}
@Test
public void parseBasicWeekDate() throws ParseException {
assertThat(
Iso8601Format.BASIC_WEEK_DATE.parse("2014W041"),
is(PlainDate.of(2014, 4, Weekday.MONDAY)));
}
@Test
public void printExtendedWeekDate() {
assertThat(
Iso8601Format.EXTENDED_WEEK_DATE.format(
PlainDate.of(2014, 4, Weekday.MONDAY)),
is("2014-W04-1"));
}
@Test
public void parseExtendedWeekDate() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_WEEK_DATE.parse("2014-W04-1"),
is(PlainDate.of(2014, 4, Weekday.MONDAY)));
}
@Test
public void printExtendedWeekDateKW53() {
assertThat(
Iso8601Format.EXTENDED_WEEK_DATE.format(
PlainDate.of(2009, 12, 28)),
is("2009-W53-1"));
}
@Test
public void parseExtendedWeekDateKW53Valid() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_WEEK_DATE.parse("2009-W53-1"),
is(PlainDate.of(2009, 12, 28)));
}
@Test(expected=ParseException.class)
public void parseExtendedWeekDateKW53Invalid() throws ParseException {
Iso8601Format.EXTENDED_WEEK_DATE.parse("2014-W53-1");
}
@Test
public void printBasicTime() {
assertThat(
Iso8601Format.BASIC_WALL_TIME.format(
PlainTime.of(23, 59, 28)),
is("235928"));
}
@Test
public void parseBasicTime() throws ParseException {
assertThat(
Iso8601Format.BASIC_WALL_TIME.parse("235928"),
is(PlainTime.of(23, 59, 28)));
assertThat(
Iso8601Format.BASIC_WALL_TIME.parse("T235928"),
is(PlainTime.of(23, 59, 28)));
}
@Test
public void printBasicTimeHHMMSSffffff() {
assertThat(
Iso8601Format.BASIC_WALL_TIME.format(
PlainTime.of(23, 59, 28, 123456000)),
is("235928,123456"));
}
@Test
public void parseBasicTimeHHMMSSffffff() throws ParseException {
assertThat(
Iso8601Format.BASIC_WALL_TIME.parse("235928,123456"),
is(PlainTime.of(23, 59, 28, 123456000)));
assertThat(
Iso8601Format.BASIC_WALL_TIME.parse("T235928,123456"),
is(PlainTime.of(23, 59, 28, 123456000)));
}
@Test
public void printExtendedTime24() {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.format(
PlainTime.midnightAtEndOfDay()),
is("24:00"));
}
@Test
public void parseExtendedTime24() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("24:00"),
is(PlainTime.midnightAtEndOfDay()));
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("T24:00"),
is(PlainTime.midnightAtEndOfDay()));
}
@Test
public void printExtendedTimeHH() {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.format(
PlainTime.of(23)),
is("23:00"));
}
@Test
public void parseExtendedTimeHH() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("23"),
is(PlainTime.of(23)));
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("T23"),
is(PlainTime.of(23)));
}
@Test
public void printExtendedTimeHHMM() {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.format(
PlainTime.of(23, 59)),
is("23:59"));
}
@Test
public void parseExtendedTimeHHMM() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("23:59"),
is(PlainTime.of(23, 59)));
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("T23:59"),
is(PlainTime.of(23, 59)));
}
@Test
public void printExtendedTimeHHMMSS() {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.format(
PlainTime.of(23, 59, 28)),
is("23:59:28"));
}
@Test
public void parseExtendedTimeHHMMSS() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("23:59:28"),
is(PlainTime.of(23, 59, 28)));
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("T23:59:28"),
is(PlainTime.of(23, 59, 28)));
}
@Test
public void printExtendedTimeHHMMSSff() {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.format(
PlainTime.of(23, 59, 28, 120000000)),
is("23:59:28,12"));
}
@Test
public void parseExtendedTimeHHMMSSff() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("23:59:28,12"),
is(PlainTime.of(23, 59, 28, 120000000)));
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("T23:59:28,12"),
is(PlainTime.of(23, 59, 28, 120000000)));
}
@Test
public void printExtendedTimeHHMMSSfff() {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.format(
PlainTime.of(23, 59, 28, 123000000)),
is("23:59:28,123"));
}
@Test
public void parseExtendedTimeHHMMSSfff() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("23:59:28,123"),
is(PlainTime.of(23, 59, 28, 123000000)));
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("T23:59:28,123"),
is(PlainTime.of(23, 59, 28, 123000000)));
}
@Test
public void printExtendedTimeHHMMSSffffff() {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.format(
PlainTime.of(23, 59, 28, 123456000)),
is("23:59:28,123456"));
}
@Test
public void parseExtendedTimeHHMMSSffffff() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("23:59:28,123456"),
is(PlainTime.of(23, 59, 28, 123456000)));
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("T23:59:28,123456"),
is(PlainTime.of(23, 59, 28, 123456000)));
}
@Test
public void printExtendedTimeHHMMSSfffffffff() {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.format(PlainTime.of(23, 59, 28, 123456789)),
is("23:59:28,123456789"));
}
@Test
public void parseExtendedTimeHHMMSSfffffffff() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("23:59:28,123456789"),
is(PlainTime.of(23, 59, 28, 123456789)));
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("T23:59:28,123456789"),
is(PlainTime.of(23, 59, 28, 123456789)));
}
@Test
public void parseExtendedTimeWithDecimalPoint() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("23:59:28.123456789"),
is(PlainTime.of(23, 59, 28, 123456789)));
assertThat(
Iso8601Format.EXTENDED_WALL_TIME.parse("T23:59:28.123456789"),
is(PlainTime.of(23, 59, 28, 123456789)));
}
@Test
public void printExtendedDateTimeOffsetZ() {
assertThat(
Iso8601Format.EXTENDED_DATE_TIME_OFFSET.format(
PlainDate.of(2012, 6, 30)
.at(PlainTime.of(23, 59, 59))
.atUTC()
.plus(1, SI.SECONDS)),
is("2012-06-30T23:59:60Z"));
}
@Test
public void parseExtendedDateTimeOffsetZ() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_DATE_TIME_OFFSET
.parse("2012-06-30T23:59:60Z"),
is(
PlainDate.of(2012, 6, 30)
.at(PlainTime.of(23, 59, 59))
.atUTC()
.plus(1, SI.SECONDS)));
}
@Test
public void printExtendedDateTimeOffsetPlus02() {
assertThat(
Iso8601Format.EXTENDED_DATE_TIME_OFFSET
.withTimezone(ZonalOffset.ofTotalSeconds(7200)).format(
PlainDate.of(2012, 6, 30)
.at(PlainTime.of(23, 59, 59))
.atUTC()
.plus(1, SI.SECONDS)),
is("2012-07-01T01:59:60+02:00"));
}
@Test
public void parseExtendedDateTimeOffsetPlus02() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_DATE_TIME_OFFSET
.parse("2012-07-01T01:59:60+02:00"),
is(
PlainDate.of(2012, 6, 30)
.at(PlainTime.of(23, 59, 59))
.atUTC()
.plus(1, SI.SECONDS)));
}
@Test
public void printExtendedDateTimeOffsetMinus0530() {
assertThat(
Iso8601Format.EXTENDED_DATE_TIME_OFFSET
.withTimezone(ZonalOffset.ofHoursMinutes(OffsetSign.BEHIND_UTC, 5, 30))
.format(PlainDate.of(2012, 6, 30).at(PlainTime.of(23, 59, 59)).atUTC().plus(1, SI.SECONDS)),
is("2012-06-30T18:29:60-05:30"));
}
@Test
public void parseExtendedDateTimeOffsetMinus0530() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_DATE_TIME_OFFSET.parse("2012-06-30T18:29:60-05:30"),
is(
PlainDate.of(2012, 6, 30)
.at(PlainTime.of(23, 59, 59))
.atUTC()
.plus(1, SI.SECONDS)));
}
// Leap second can only be represented with timezone-offset in full minutes: -00:00:01
@Test(expected=IllegalArgumentException.class)
public void printExtendedDateTimeOffsetInvalid() {
Iso8601Format.EXTENDED_DATE_TIME_OFFSET
.withTimezone(ZonalOffset.ofTotalSeconds(-1))
.format(
PlainDate.of(2012, 6, 30)
.at(PlainTime.of(23, 59, 59))
.atUTC()
.plus(1, SI.SECONDS));
}
@Test(expected=ParseException.class)
public void parseExtendedDateTimeOffsetMissing() throws ParseException {
Iso8601Format.EXTENDED_DATE_TIME_OFFSET.parse("2012-06-30T18:29:42");
}
@Test
public void printExtendedDateTime() {
assertThat(
Iso8601Format.EXTENDED_DATE_TIME.format(
PlainDate.of(2012, 6, 30).at(PlainTime.of(23, 59, 59))),
is("2012-06-30T23:59:59"));
}
@Test
public void parseExtendedDateTime() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_DATE_TIME.parse("2012-06-30T23:59:59"),
is(PlainDate.of(2012, 6, 30).at(PlainTime.of(23, 59, 59))));
}
@Test
public void parseExtendedDateTimeStrict24() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_DATE_TIME
.with(Attributes.LENIENCY, Leniency.STRICT)
.parse("2012-06-30T24:00"),
is(PlainDate.of(2012, 7, 1).atStartOfDay()));
}
@Test(expected=ParseException.class)
public void parseExtendedDateTimeStrict2401() throws ParseException {
Iso8601Format.EXTENDED_DATE_TIME.parse("2012-06-30T24:01");
}
@Test
public void parseExtendedDateTimeSmart24() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_DATE_TIME
.with(Attributes.LENIENCY, Leniency.SMART)
.parse("2012-06-30T24:00"),
is(PlainDate.of(2012, 7, 1).atStartOfDay()));
}
@Test(expected=ParseException.class)
public void parseExtendedDateTimeSmart27() throws ParseException {
Iso8601Format.EXTENDED_DATE_TIME
.with(Attributes.LENIENCY, Leniency.SMART)
.parse("2012-06-30T27:45");
}
@Test
public void parseExtendedDateTimeLax27() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_DATE_TIME
.with(Attributes.LENIENCY, Leniency.LAX)
.parse("2012-06-30T27:45"),
is(PlainTimestamp.of(2012, 7, 1, 3, 45)));
}
@Test(expected=ParseException.class)
public void parseExtendedDateSmartApril31() throws ParseException {
Iso8601Format.EXTENDED_CALENDAR_DATE
.with(Attributes.LENIENCY, Leniency.SMART)
.parse("2012-04-31");
}
@Test
public void parseExtendedDateLaxApril31() throws ParseException {
assertThat(
Iso8601Format.EXTENDED_CALENDAR_DATE
.with(Attributes.LENIENCY, Leniency.LAX)
.parse("2012-04-31"),
is(PlainDate.of(2012, 5, 1)));
}
@Test
public void methodParseDate() throws ParseException {
assertThat(
Iso8601Format.parseDate("20160101"),
is(PlainDate.of(2016, 1, 1)));
assertThat(
Iso8601Format.parseDate("2016001"),
is(PlainDate.of(2016, 1, 1)));
assertThat(
Iso8601Format.parseDate("2015W535"),
is(PlainDate.of(2016, 1, 1)));
assertThat(
Iso8601Format.parseDate("2016-01-01"),
is(PlainDate.of(2016, 1, 1)));
assertThat(
Iso8601Format.parseDate("2016-001"),
is(PlainDate.of(2016, 1, 1)));
assertThat(
Iso8601Format.parseDate("2015-W53-5"),
is(PlainDate.of(2016, 1, 1)));
}
@Test(expected=ParseException.class)
public void methodParseDateTooShort() throws ParseException {
Iso8601Format.parseDate("123456");
}
@Test
public void ofBasicTimeT24() {
PlainTime time = PlainTime.midnightAtEndOfDay();
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.HOURS).format(time),
is("24"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.MINUTES).format(time),
is("2400"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.SECONDS).format(time),
is("240000"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.MILLIS).format(time),
is("240000,000"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.MICROS).format(time),
is("240000,000000"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.NANOS).format(time),
is("240000,000000000"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.HOURS).format(time),
is("24"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.MINUTES).format(time),
is("2400"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.SECONDS).format(time),
is("240000"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.MILLIS).format(time),
is("240000.000"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.MICROS).format(time),
is("240000.000000"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.NANOS).format(time),
is("240000.000000000"));
}
@Test
public void ofBasicTimeWithMillis120() {
PlainTime time = PlainTime.of(7, 45, 8, 120_000_000);
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.HOURS).format(time),
is("07"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.MINUTES).format(time),
is("0745"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.SECONDS).format(time),
is("074508"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.MILLIS).format(time),
is("074508,120"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.MICROS).format(time),
is("074508,120000"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.NANOS).format(time),
is("074508,120000000"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.HOURS).format(time),
is("07"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.MINUTES).format(time),
is("0745"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.SECONDS).format(time),
is("074508"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.MILLIS).format(time),
is("074508.120"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.MICROS).format(time),
is("074508.120000"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.NANOS).format(time),
is("074508.120000000"));
}
@Test
public void ofBasicTimeWithMicros400() {
PlainTime time = PlainTime.of(7, 45, 8, 123_400_000);
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.HOURS).format(time),
is("07"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.MINUTES).format(time),
is("0745"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.SECONDS).format(time),
is("074508"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.MILLIS).format(time),
is("074508,123"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.MICROS).format(time),
is("074508,123400"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.NANOS).format(time),
is("074508,123400000"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.HOURS).format(time),
is("07"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.MINUTES).format(time),
is("0745"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.SECONDS).format(time),
is("074508"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.MILLIS).format(time),
is("074508.123"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.MICROS).format(time),
is("074508.123400"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.NANOS).format(time),
is("074508.123400000"));
}
@Test
public void ofBasicTimeWithNanos() {
PlainTime time = PlainTime.of(7, 45, 8, 123_456_789);
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.HOURS).format(time),
is("07"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.MINUTES).format(time),
is("0745"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.SECONDS).format(time),
is("074508"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.MILLIS).format(time),
is("074508,123"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.MICROS).format(time),
is("074508,123456"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.COMMA, ClockUnit.NANOS).format(time),
is("074508,123456789"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.HOURS).format(time),
is("07"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.MINUTES).format(time),
is("0745"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.SECONDS).format(time),
is("074508"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.MILLIS).format(time),
is("074508.123"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.MICROS).format(time),
is("074508.123456"));
assertThat(
Iso8601Format.ofBasicTime(IsoDecimalStyle.DOT, ClockUnit.NANOS).format(time),
is("074508.123456789"));
}
@Test
public void ofExtendedTimeT24() {
PlainTime time = PlainTime.midnightAtEndOfDay();
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.HOURS).format(time),
is("24"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.MINUTES).format(time),
is("24:00"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.SECONDS).format(time),
is("24:00:00"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.MILLIS).format(time),
is("24:00:00,000"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.MICROS).format(time),
is("24:00:00,000000"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.NANOS).format(time),
is("24:00:00,000000000"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.HOURS).format(time),
is("24"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.MINUTES).format(time),
is("24:00"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.SECONDS).format(time),
is("24:00:00"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.MILLIS).format(time),
is("24:00:00.000"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.MICROS).format(time),
is("24:00:00.000000"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.NANOS).format(time),
is("24:00:00.000000000"));
}
@Test
public void ofExtendedTimeWithMillis120() {
PlainTime time = PlainTime.of(7, 45, 8, 120_000_000);
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.HOURS).format(time),
is("07"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.MINUTES).format(time),
is("07:45"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.SECONDS).format(time),
is("07:45:08"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.MILLIS).format(time),
is("07:45:08,120"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.MICROS).format(time),
is("07:45:08,120000"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.NANOS).format(time),
is("07:45:08,120000000"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.HOURS).format(time),
is("07"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.MINUTES).format(time),
is("07:45"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.SECONDS).format(time),
is("07:45:08"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.MILLIS).format(time),
is("07:45:08.120"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.MICROS).format(time),
is("07:45:08.120000"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.NANOS).format(time),
is("07:45:08.120000000"));
}
@Test
public void ofExtendedTimeWithMicros400() {
PlainTime time = PlainTime.of(7, 45, 8, 123_400_000);
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.HOURS).format(time),
is("07"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.MINUTES).format(time),
is("07:45"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.SECONDS).format(time),
is("07:45:08"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.MILLIS).format(time),
is("07:45:08,123"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.MICROS).format(time),
is("07:45:08,123400"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.NANOS).format(time),
is("07:45:08,123400000"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.HOURS).format(time),
is("07"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.MINUTES).format(time),
is("07:45"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.SECONDS).format(time),
is("07:45:08"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.MILLIS).format(time),
is("07:45:08.123"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.MICROS).format(time),
is("07:45:08.123400"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.NANOS).format(time),
is("07:45:08.123400000"));
}
@Test
public void ofExtendedTimeWithNanos() {
PlainTime time = PlainTime.of(7, 45, 8, 123_456_000);
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.HOURS).format(time),
is("07"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.MINUTES).format(time),
is("07:45"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.SECONDS).format(time),
is("07:45:08"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.MILLIS).format(time),
is("07:45:08,123"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.MICROS).format(time),
is("07:45:08,123456"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.COMMA, ClockUnit.NANOS).format(time),
is("07:45:08,123456000"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.HOURS).format(time),
is("07"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.MINUTES).format(time),
is("07:45"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.SECONDS).format(time),
is("07:45:08"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.MILLIS).format(time),
is("07:45:08.123"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.MICROS).format(time),
is("07:45:08.123456"));
assertThat(
Iso8601Format.ofExtendedTime(IsoDecimalStyle.DOT, ClockUnit.NANOS).format(time),
is("07:45:08.123456000"));
}
@Test
public void ofTimestamp() {
PlainTimestamp tsp = PlainTimestamp.of(2016, 2, 29, 17, 45, 30).plus(123450, ClockUnit.MICROS);
assertThat(
Iso8601Format.ofTimestamp(
IsoDateStyle.BASIC_CALENDAR_DATE,
IsoDecimalStyle.COMMA,
ClockUnit.MICROS
).format(tsp),
is("20160229T174530,123450"));
assertThat(
Iso8601Format.ofTimestamp(
IsoDateStyle.BASIC_ORDINAL_DATE,
IsoDecimalStyle.COMMA,
ClockUnit.MICROS
).format(tsp),
is("2016060T174530,123450"));
assertThat(
Iso8601Format.ofTimestamp(
IsoDateStyle.BASIC_WEEK_DATE,
IsoDecimalStyle.COMMA,
ClockUnit.MICROS
).format(tsp),
is("2016W091T174530,123450"));
assertThat(
Iso8601Format.ofTimestamp(
IsoDateStyle.EXTENDED_CALENDAR_DATE,
IsoDecimalStyle.DOT,
ClockUnit.MICROS
).format(tsp),
is("2016-02-29T17:45:30.123450"));
assertThat(
Iso8601Format.ofTimestamp(
IsoDateStyle.EXTENDED_ORDINAL_DATE,
IsoDecimalStyle.DOT,
ClockUnit.MICROS
).format(tsp),
is("2016-060T17:45:30.123450"));
assertThat(
Iso8601Format.ofTimestamp(
IsoDateStyle.EXTENDED_WEEK_DATE,
IsoDecimalStyle.DOT,
ClockUnit.MICROS
).format(tsp),
is("2016-W09-1T17:45:30.123450"));
}
@Test
public void ofMoment() {
Moment ls = PlainTimestamp.of(2012, 6, 30, 23, 59, 59).atUTC().plus(1, SI.SECONDS);
assertThat(
Iso8601Format.ofMoment(
IsoDateStyle.EXTENDED_CALENDAR_DATE,
IsoDecimalStyle.COMMA,
ClockUnit.MILLIS,
ZonalOffset.ofHoursMinutes(OffsetSign.AHEAD_OF_UTC, 5, 30)
).format(ls),
is("2012-07-01T05:29:60,000+05:30"));
assertThat(
Iso8601Format.ofMoment(
IsoDateStyle.EXTENDED_CALENDAR_DATE,
IsoDecimalStyle.COMMA,
ClockUnit.MILLIS,
ZonalOffset.ofHours(OffsetSign.BEHIND_UTC, 4)
).format(ls),
is("2012-06-30T19:59:60,000-04:00"));
assertThat(
Iso8601Format.ofMoment(
IsoDateStyle.EXTENDED_CALENDAR_DATE,
IsoDecimalStyle.DOT,
ClockUnit.MILLIS,
ZonalOffset.UTC
).format(ls),
is("2012-06-30T23:59:60.000Z"));
}
}