MCPcopy Create free account
hub / github.com/bytedance/bolt / buildHiveDateTimeFormatter

Function buildHiveDateTimeFormatter

bolt/functions/lib/DateTimeFormatter.cpp:2217–2326  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2215}
2216
2217std::shared_ptr<DateTimeFormatter> buildHiveDateTimeFormatter(
2218 const std::string_view& format) {
2219 if (format.empty()) {
2220 BOLT_USER_FAIL("Invalid pattern specification");
2221 }
2222
2223 DateTimeFormatterBuilder builder(format.size());
2224
2225 const char* cur = format.data();
2226 const char* end = cur + format.size();
2227 while (cur < end) {
2228 auto tokenEnd = cur;
2229 if (*tokenEnd == '%') { // pattern
2230 ++tokenEnd;
2231 if (tokenEnd == end) {
2232 break;
2233 }
2234 switch (*tokenEnd) {
2235 case 'C':
2236 builder.appendCenturyOfEra(2);
2237 break;
2238 case 'd':
2239 builder.appendDayOfMonth(2);
2240 break;
2241 case 'D':
2242 builder.appendMonthOfYear(2);
2243 builder.appendLiteral("/");
2244 builder.appendDayOfMonth(2);
2245 builder.appendLiteral("/");
2246 builder.appendYear(4);
2247 break;
2248 case 'e':
2249 builder.appendDayOfMonth(1);
2250 break;
2251 case 'F':
2252 builder.appendYear(4);
2253 builder.appendLiteral("/");
2254 builder.appendMonthOfYear(2);
2255 builder.appendLiteral("/");
2256 builder.appendDayOfMonth(2);
2257 break;
2258 case 'H':
2259 builder.appendHourOfDay(2);
2260 break;
2261 case 'I':
2262 builder.appendClockHourOfHalfDay(2);
2263 break;
2264 case 'j':
2265 builder.appendDayOfYear(3);
2266 break;
2267 case 'm':
2268 builder.appendMonthOfYear(2);
2269 break;
2270 case 'M':
2271 builder.appendMinuteOfHour(2);
2272 break;
2273 case 'n':
2274 builder.appendLiteral("\n");

Callers 1

setFormatterMethod · 0.85

Calls 5

emptyMethod · 0.45
sizeMethod · 0.45
dataMethod · 0.45
buildMethod · 0.45
setTypeMethod · 0.45

Tested by

no test coverage detected