411 {
412 bool flag = false;
413 if (result == null)
414 {
416 flag = true;
417 }
418 int num = (int)(
value.Ticks / 864000000000
L);
419 long num2 = value.Ticks % 864000000000
L;
421 {
422 num = -num;
423 num2 = -num2;
424 }
425 int value2 = (int)(num2 / 36000000000
L % 24);
426 int value3 = (int)(num2 / 600000000 % 60);
427 int value4 = (int)(num2 / 10000000 % 60);
428 int num3 = (int)(num2 % 10000000);
430 int num6;
431 for (
int i = 0;
i <
format.Length;
i += num6)
432 {
434 switch (c)
435 {
436 case 'h':
437 num6 = DateTimeFormat.ParseRepeatPattern(
format, i, c);
438 if (num6 <= 2)
439 {
440 DateTimeFormat.FormatDigits(result, value2, num6);
441 continue;
442 }
443 break;
444 case 'm':
445 num6 = DateTimeFormat.ParseRepeatPattern(
format, i, c);
446 if (num6 <= 2)
447 {
448 DateTimeFormat.FormatDigits(result, value3, num6);
449 continue;
450 }
451 break;
452 case 's':
453 num6 = DateTimeFormat.ParseRepeatPattern(
format, i, c);
454 if (num6 <= 2)
455 {
456 DateTimeFormat.FormatDigits(result, value4, num6);
457 continue;
458 }
459 break;
460 case 'f':
461 num6 = DateTimeFormat.ParseRepeatPattern(
format, i, c);
462 if (num6 <= 7)
463 {
464 num4 = num3;
465 num4 /= TimeSpanParse.Pow10(7 - num6);
466 result.AppendSpanFormattable(num4, DateTimeFormat.fixedNumberFormats[num6 - 1], CultureInfo.InvariantCulture);
467 continue;
468 }
469 break;
470 case 'F':
471 num6 = DateTimeFormat.ParseRepeatPattern(
format, i, c);
472 if (num6 <= 7)
473 {
474 num4 = num3;
475 num4 /= TimeSpanParse.Pow10(7 - num6);
476 int num7 = num6;
477 while (num7 > 0 && num4 % 10 == 0
L)
478 {
479 num4 /= 10;
480 num7--;
481 }
482 if (num7 > 0)
483 {
484 result.AppendSpanFormattable(num4, DateTimeFormat.fixedNumberFormats[num7 - 1], CultureInfo.InvariantCulture);
485 }
486 continue;
487 }
488 break;
489 case 'd':
490 num6 = DateTimeFormat.ParseRepeatPattern(
format, i, c);
491 if (num6 <= 8)
492 {
493 DateTimeFormat.FormatDigits(result, num, num6, overrideLengthLimit: true);
494 continue;
495 }
496 break;
497 case '"':
498 case '\'':
499 num6 = DateTimeFormat.ParseQuoteString(
format, i, result);
500 continue;
501 case '%':
502 {
503 int num5 = DateTimeFormat.ParseNextChar(
format, i);
504 if (num5 >= 0 && num5 != 37)
505 {
506 char reference = (char)num5;
508 num6 = 2;
509 continue;
510 }
511 break;
512 }
513 case '\\':
514 {
515 int num5 = DateTimeFormat.ParseNextChar(
format, i);
516 if (num5 >= 0)
517 {
518 result.
Append((
char)num5);
519 num6 = 2;
520 continue;
521 }
522 break;
523 }
524 }
525 if (flag)
526 {
528 }
529 throw new FormatException(SR.Format_InvalidString);
530 }
531 return result;
532 }
static void Release(StringBuilder sb)
static StringBuilder Acquire(int capacity=16)
StringBuilder Append(char value, int repeatCount)