private DateTimePrinterParser printerParser(Locale locale){
  WeekFields weekDef=WeekFields.of(locale);
  TemporalField field=null;
switch (chr) {
case 'Y':
    field=weekDef.weekBasedYear();
  if (count == 2) {
    return new ReducedPrinterParser(field,2,2,0,ReducedPrinterParser.BASE_DATE,0);
  }
 else {
    return new NumberPrinterParser(field,count,19,(count < 4) ? SignStyle.NORMAL : SignStyle.EXCEEDS_PAD,-1);
  }
case 'e':
case 'c':
field=weekDef.dayOfWeek();
break;
case 'w':
field=weekDef.weekOfWeekBasedYear();
break;
case 'W':
field=weekDef.weekOfMonth();
break;
default :
throw new IllegalStateException("unreachable");
}
return new NumberPrinterParser(field,(count == 2 ? 2 : 1),2,SignStyle.NOT_NEGATIVE);
}

private DateTimePrinterParser printerParser ( Locale locale ) { WeekFields weekDef = WeekFields . of ( locale ) ; TemporalField field = null ; switch ( chr ) { case 'Y' : field = weekDef . weekBasedYear ( ) ; if ( count == 2 ) { return new ReducedPrinterParser ( field , 2 , 2 , 0 , ReducedPrinterParser . BASE_DATE , 0 ) ; } else { return new NumberPrinterParser ( field , count , 19 , ( count < 4 ) ? SignStyle . NORMAL : SignStyle . EXCEEDS_PAD , - 1 ) ; } case 'e' : case 'c' : field = weekDef . dayOfWeek ( ) ; break ; case 'w' : field = weekDef . weekOfWeekBasedYear ( ) ; break ; case 'W' : field = weekDef . weekOfMonth ( ) ; break ; default : throw new IllegalStateException ( "unreachable" ) ; } return new NumberPrinterParser ( field , ( count == 2 ? 2 : 1 ) , 2 , SignStyle . NOT_NEGATIVE ) ; }
gets the printerparser to use based on the field and the locale .
