| 1172 | } |
| 1173 | |
| 1174 | char* DateTime::parseFormat(char* buf, std::size_t bufSz, const char* format, const struct tm* tInfo, |
| 1175 | std::size_t msec, const base::SubsecondPrecision* ssPrec) { |
| 1176 | const char* bufLim = buf + bufSz; |
| 1177 | for (; *format; ++format) { |
| 1178 | if (*format == base::consts::kFormatSpecifierChar) { |
| 1179 | switch (*++format) { |
| 1180 | case base::consts::kFormatSpecifierChar: // Escape |
| 1181 | break; |
| 1182 | case '\0': // End |
| 1183 | --format; |
| 1184 | break; |
| 1185 | case 'd': // Day |
| 1186 | buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_mday, 2, buf, bufLim); |
| 1187 | continue; |
| 1188 | case 'a': // Day of week (short) |
| 1189 | buf = base::utils::Str::addToBuff(base::consts::kDaysAbbrev[tInfo->tm_wday], buf, bufLim); |
| 1190 | continue; |
| 1191 | case 'A': // Day of week (long) |
| 1192 | buf = base::utils::Str::addToBuff(base::consts::kDays[tInfo->tm_wday], buf, bufLim); |
| 1193 | continue; |
| 1194 | case 'M': // month |
| 1195 | buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_mon + 1, 2, buf, bufLim); |
| 1196 | continue; |
| 1197 | case 'b': // month (short) |
| 1198 | buf = base::utils::Str::addToBuff(base::consts::kMonthsAbbrev[tInfo->tm_mon], buf, bufLim); |
| 1199 | continue; |
| 1200 | case 'B': // month (long) |
| 1201 | buf = base::utils::Str::addToBuff(base::consts::kMonths[tInfo->tm_mon], buf, bufLim); |
| 1202 | continue; |
| 1203 | case 'y': // year (two digits) |
| 1204 | buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_year + base::consts::kYearBase, 2, buf, bufLim); |
| 1205 | continue; |
| 1206 | case 'Y': // year (four digits) |
| 1207 | buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_year + base::consts::kYearBase, 4, buf, bufLim); |
| 1208 | continue; |
| 1209 | case 'h': // hour (12-hour) |
| 1210 | buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_hour % 12, 2, buf, bufLim); |
| 1211 | continue; |
| 1212 | case 'H': // hour (24-hour) |
| 1213 | buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_hour, 2, buf, bufLim); |
| 1214 | continue; |
| 1215 | case 'm': // minute |
| 1216 | buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_min, 2, buf, bufLim); |
| 1217 | continue; |
| 1218 | case 's': // second |
| 1219 | buf = base::utils::Str::convertAndAddToBuff(tInfo->tm_sec, 2, buf, bufLim); |
| 1220 | continue; |
| 1221 | case 'z': // subsecond part |
| 1222 | case 'g': |
| 1223 | buf = base::utils::Str::convertAndAddToBuff(msec, ssPrec->m_width, buf, bufLim); |
| 1224 | continue; |
| 1225 | case 'F': // AM/PM |
| 1226 | buf = base::utils::Str::addToBuff((tInfo->tm_hour >= 12) ? base::consts::kPm : base::consts::kAm, buf, bufLim); |
| 1227 | continue; |
| 1228 | default: |
| 1229 | continue; |
| 1230 | } |
| 1231 | } |
nothing calls this directly
no outgoing calls
no test coverage detected