LocalDateTimeCellConverterFactory.java

  1. package com.gh.mygreen.xlsmapper.cellconverter.impl;

  2. import java.time.LocalDateTime;
  3. import java.time.ZoneId;
  4. import java.time.ZonedDateTime;
  5. import java.time.format.DateTimeFormatter;
  6. import java.time.format.DateTimeParseException;
  7. import java.util.Date;

  8. import com.gh.mygreen.xlsmapper.Configuration;
  9. import com.gh.mygreen.xlsmapper.cellconverter.CellConverter;
  10. import com.gh.mygreen.xlsmapper.fieldaccessor.FieldAccessor;

  11. /**
  12.  * {@link LocalDateTime}を処理する{@link CellConverter}を作成するためのファクトリクラス。
  13.  *
  14.  * @since 2.0
  15.  * @author T.TSUCHIE
  16.  *
  17.  */
  18. public class LocalDateTimeCellConverterFactory extends AbstractTemporalCellConverterFactory<LocalDateTime>{

  19.     @Override
  20.     public LocalDateTimeCellConverter create(final FieldAccessor field, final Configuration config) {
  21.        
  22.         final LocalDateTimeCellConverter cellConverter = new LocalDateTimeCellConverter(field, config);
  23.         setupCellConverter(cellConverter, field, config);
  24.        
  25.         return cellConverter;
  26.        
  27.     }
  28.    
  29.     @Override
  30.     protected LocalDateTime parseTemporal(final String str, final DateTimeFormatter formatter) throws DateTimeParseException {
  31.         return LocalDateTime.parse(str, formatter);
  32.     }
  33.    
  34.     @Override
  35.     protected String getDefaultJavaPattern() {
  36.         return "uuuu-MM-dd HH:mm:ss";
  37.     }

  38.     @Override
  39.     protected String getDefaultExcelPattern() {
  40.         return "yyyy-mm-dd hh:mm:ss";
  41.     }
  42.    
  43.     public class LocalDateTimeCellConverter extends AbstractTemporalCellConverter<LocalDateTime> {
  44.        
  45.         private LocalDateTimeCellConverter(final FieldAccessor field, final Configuration config) {
  46.             super(field, config);
  47.         }
  48.        
  49.         @Override
  50.         protected LocalDateTime convertFromDate(final Date date) {
  51.             LocalDateTime dateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
  52.             return dateTime;
  53.         }
  54.        
  55.         @Override
  56.         protected Date convertToDate(final LocalDateTime value, final boolean dateStart1904) {
  57.             ZonedDateTime zoneDateTime = ZonedDateTime.of(value, ZoneId.systemDefault());
  58.             return Date.from(zoneDateTime.toInstant());
  59.         }
  60.        
  61.     }
  62.    
  63. }