| 308 | } |
| 309 | |
| 310 | bool 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 | |
| 329 | string FormatTextToken(const DateTimeFormatToken& tok) { |
| 330 | DCHECK(tok.type == TEXT); |
no test coverage detected