MCPcopy Create free account
hub / github.com/apache/impala / GetMonthAndDayFromDaysSinceJan1

Function GetMonthAndDayFromDaysSinceJan1

be/src/runtime/datetime-parser-common.cc:310–327  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

308}
309
310bool GetMonthAndDayFromDaysSinceJan1(int year, int days_since_jan1, int* month,
311 int* day) {
312 DCHECK(days_since_jan1 >= 0 && days_since_jan1 < 366);
313 DCHECK(month != nullptr);
314 DCHECK(day != nullptr);
315 // Calculate month using month ranges and the average month length.
316 const vector<int>& month_ranges = IsLeapYear(year) ? LEAP_YEAR_MONTH_RANGES :
317 MONTH_RANGES;
318 int m = static_cast<int>(days_since_jan1 / 30.5);
319 DCHECK(month_ranges[m] <= days_since_jan1);
320
321 *month = (month_ranges[m + 1] <= days_since_jan1) ? m + 2 : m + 1;
322 if (*month < 1 || *month > 12) return false;
323
324 // Calculate day.
325 *day = days_since_jan1 - month_ranges[*month - 1] + 1;
326 return (*day >= 1 && *day <= 31);
327}
328
329string FormatTextToken(const DateTimeFormatToken& tok) {
330 DCHECK(tok.type == TEXT);

Callers 2

ToYearMonthDayMethod · 0.85
ParseDateTimeMethod · 0.85

Calls 1

IsLeapYearFunction · 0.85

Tested by

no test coverage detected