Skip to content

Commit

Permalink
fixing datetime truncate for multi-day
Browse files Browse the repository at this point in the history
  • Loading branch information
Rong Rong committed Mar 9, 2022
1 parent 53fa9a5 commit 7e83d1f
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 4 deletions.
Expand Up @@ -703,7 +703,8 @@ public static String dateTimeConvert(String timeValueStr, String inputFormatStr,
dateTime = dateTime.withHourOfDay((dateTime.getHourOfDay() / size) * size).hourOfDay().roundFloorCopy();
break;
case DAYS:
dateTime = dateTime.withDayOfMonth((dateTime.getDayOfMonth() / size) * size).dayOfMonth().roundFloorCopy();
dateTime = dateTime.withDayOfMonth(((dateTime.getDayOfMonth() - 1) / size) * size + 1).dayOfMonth()
.roundFloorCopy();
break;
default:
break;
Expand Down
Expand Up @@ -80,7 +80,8 @@ public BaseDateTimeTransformer(@Nonnull DateTimeFormatSpec inputFormat, @Nonnull
break;
case DAYS:
_dateTimeTruncate = (dateTime) -> _outputDateTimeFormatter
.print(dateTime.withDayOfMonth((dateTime.getDayOfMonth() / sz) * sz).dayOfMonth().roundFloorCopy());
.print(dateTime.withDayOfMonth(((dateTime.getDayOfMonth() - 1) / sz) * sz + 1).dayOfMonth()
.roundFloorCopy());
break;
default:
_dateTimeTruncate = _outputDateTimeFormatter::print;
Expand Down
Expand Up @@ -456,9 +456,12 @@ public void testDateTimeConvert() {
"1:MILLISECONDS:SIMPLE_DATE_FORMAT:yyyy-MM-dd HH:mm:ss.SSS tz(America/Denver)", "12:HOURS",
"2018-04-11 00:00:00.000");
// Test conversion from millis since epoch to simple date format (America/Denver timezone with 5 day granularity)
testDateTimeConvert(1519926205000L/* 20180301T09:43:25 */, "1:MILLISECONDS:EPOCH",
"1:MILLISECONDS:SIMPLE_DATE_FORMAT:yyyy-MM-dd HH:mm:ss.SSS tz(America/Denver)", "5:DAYS",
"2018-03-01 00:00:00.000");
testDateTimeConvert(1522230205000L/* 20180328T09:43:25 */, "1:MILLISECONDS:EPOCH",
"1:MILLISECONDS:SIMPLE_DATE_FORMAT:yyyy-MM-dd HH:mm:ss.SSS tz(America/Denver)", "5:DAYS",
"2018-03-25 00:00:00.000");
"2018-03-26 00:00:00.000");
// Test conversion from millis since epoch to simple date format (America/Los_Angeles timezone with 1 day
// granularity)
testDateTimeConvert(1524013200000L/* 20180418T01:00:00 */, "1:MILLISECONDS:EPOCH",
Expand Down Expand Up @@ -507,7 +510,7 @@ public void testDateTimeConvert() {
// granularity)
testDateTimeConvert("20180328T09:43:25", "1:HOURS:SIMPLE_DATE_FORMAT:yyyyMMdd''T''HH:mm:ss",
"1:MILLISECONDS:SIMPLE_DATE_FORMAT:yyyy-MM-dd HH:mm:ss" + ".SSS tz(America/Denver)", "5:DAYS",
"2018-03-25 00:00:00.000");
"2018-03-26 00:00:00.000");
// Test conversion from simple date format to another simple date format (America/Los_Angeles timezone with 1 day
// granularity)
testDateTimeConvert("20180418T01:00:00", "1:HOURS:SIMPLE_DATE_FORMAT:yyyyMMdd''T''HH:mm:ss",
Expand Down

0 comments on commit 7e83d1f

Please sign in to comment.