Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,14 @@ public enum FormatElementEnum implements FormatElement {
// TODO: how to support timezones?
}
},
W("W", "The week number of the month (Sunday as the first day of the week) as a decimal "
+ "number (1-5)") {
@Override public void format(StringBuilder sb, Date date) {
final Calendar calendar = Work.get().calendar;
calendar.setTime(date);
sb.append(String.format(Locale.ROOT, "%d", calendar.get(Calendar.WEEK_OF_MONTH)));
}
},
WW("w", "The week number of the year (Sunday as the first day of the week) as a decimal "
+ "number (00-53)") {
@Override public void format(StringBuilder sb, Date date) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
import static org.apache.calcite.util.format.FormatElementEnum.Q;
import static org.apache.calcite.util.format.FormatElementEnum.SS;
import static org.apache.calcite.util.format.FormatElementEnum.TZR;
import static org.apache.calcite.util.format.FormatElementEnum.W;
import static org.apache.calcite.util.format.FormatElementEnum.WW;
import static org.apache.calcite.util.format.FormatElementEnum.YY;
import static org.apache.calcite.util.format.FormatElementEnum.YYYY;
Expand Down Expand Up @@ -163,6 +164,7 @@ MI, literalElement(":"), SS, literalElement(" "),
map.put("DDD", DDD);
map.put("DD", DD);
map.put("D", D);
map.put("W", W);
map.put("WW", WW);
map.put("IW", IW);
map.put("Q", Q);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,149 @@
*/
class FormatElementEnumTest {
@Test void testDay() {
final String date = "2014-09-30T10:00:00Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.DAY.format(ts, Date.from(Instant.parse("2014-09-30T10:00:00Z")));
FormatElementEnum.DAY.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("Tuesday"));
}

@Test void testD() {
final String date = "2014-09-30T10:00:00Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.D.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("3"));
}

@Test void testDD() {
final String date = "2014-09-30T10:00:00Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.DD.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("30"));
}

@Test void testDDD() {
final String date = "2014-09-30T10:00:00Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.DDD.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("273"));
}

@Test void testDY() {
final String date = "2014-09-30T10:00:00Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.DY.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("Tue"));
}

@Test void testFF1() {
final String date = "2014-09-30T10:00:00.123456Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.FF1.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("123"));
}

@Test void testFF2() {
final String date = "2014-09-30T10:00:00.123456Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.FF2.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("123"));
}

@Test void testFF3() {
final String date = "2014-09-30T10:00:00.123456Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.FF3.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("123"));
}

@Test void testFF4() {
final String date = "2014-09-30T10:00:00.123456Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.FF4.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("0123"));
}

@Test void testFF5() {
final String date = "2014-09-30T10:00:00.123456Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.FF5.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("00123"));
}

@Test void testFF6() {
final String date = "2014-09-30T10:00:00.123456Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.FF6.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("000123"));
}

@Test void testIW() {
final String date = "2014-09-30T10:00:00Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.IW.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("40"));
}

@Test void testMM() {
final String date = "2014-09-30T10:00:00Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.MM.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("09"));
}

@Test void testMON() {
final String date = "2014-09-30T10:00:00Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.MON.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("Sep"));
}

@Test void testQ() {
final String date = "2014-09-30T10:00:00Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.Q.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("3"));
}

@Test void testMS() {
final String date = "2014-09-30T10:00:00Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.MS.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("000"));
}

@Test void testSS() {
final String date = "2014-09-30T10:00:00Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.SS.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("00"));
}

@Test void testWM() {
final String date = "2014-09-30T10:00:00Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.W.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("5"));
}

@Test void testWW() {
final String date = "2014-09-30T10:00:00Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.WW.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("40"));
}

@Test void testYY() {
final String date = "2014-09-30T10:00:00Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.YY.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("14"));
}

@Test void testYYYY() {
final String date = "2014-09-30T10:00:00Z";
StringBuilder ts = new StringBuilder();
FormatElementEnum.YYYY.format(ts, Date.from(Instant.parse(date)));
assertThat(ts, hasToString("2014"));
}
}