LocalTimeCellConverterFactory.java
- package com.gh.mygreen.xlsmapper.cellconverter.impl;
- import java.time.LocalDate;
- import java.time.LocalDateTime;
- import java.time.LocalTime;
- import java.time.ZoneId;
- import java.time.ZonedDateTime;
- import java.time.format.DateTimeFormatter;
- import java.time.format.DateTimeParseException;
- import java.util.Date;
- import com.gh.mygreen.xlsmapper.Configuration;
- import com.gh.mygreen.xlsmapper.cellconverter.CellConverter;
- import com.gh.mygreen.xlsmapper.fieldaccessor.FieldAccessor;
- /**
- * {@link LocalTime}を処理する{@link CellConverter}を作成するためのファクトリクラス。
- *
- * @since 2.0
- * @author T.TSUCHIE
- *
- */
- public class LocalTimeCellConverterFactory extends AbstractTemporalCellConverterFactory<LocalTime>{
- @Override
- public LocalTimeCellConverter create(final FieldAccessor field, final Configuration config) {
- final LocalTimeCellConverter cellConverter = new LocalTimeCellConverter(field, config);
- setupCellConverter(cellConverter, field, config);
- return cellConverter;
- }
- @Override
- protected LocalTime parseTemporal(final String str, final DateTimeFormatter formatter) throws DateTimeParseException {
- return LocalTime.parse(str, formatter);
- }
- @Override
- protected String getDefaultJavaPattern() {
- return "HH:mm:ss";
- }
- @Override
- protected String getDefaultExcelPattern() {
- return "hh:mm:ss";
- }
- public class LocalTimeCellConverter extends AbstractTemporalCellConverter<LocalTime> {
- private LocalTimeCellConverter(final FieldAccessor field, final Configuration config) {
- super(field, config);
- }
- @Override
- protected LocalTime convertFromDate(final Date date) {
- LocalDateTime dateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
- return dateTime.toLocalTime();
- }
- @Override
- protected Date convertToDate(final LocalTime value, final boolean dateStart1904) {
- final LocalDateTime dateTime;
- if(dateStart1904) {
- dateTime = value.atDate(LocalDate.of(1904, 1, 1));
- } else {
- dateTime = value.atDate(LocalDate.of(1899, 12, 31));
- }
- ZonedDateTime zoneDateTime = ZonedDateTime.of(dateTime, ZoneId.systemDefault());
- return Date.from(zoneDateTime.toInstant());
- }
- }
- }