feat: add java.time.LocalTime converters - #1032
Conversation
Signed-off-by: lance <leehaut@gmail.com>
|
The newly added files in this PR are implemented from scratch and are not derived from Alibaba's EasyExcel. Therefore, no EasyExcel-related license header is required for these files. Please refer to: https://github.com/apache/fesod/blob/main/fesod-sheet/src/main/java/org/apache/fesod/sheet/FesodSheet.java |
Thanks for the catch. Removed the EasyExcel-derived license header from the newly added LocalTime converter files; they now keep the Apache 2.0 header only, consistent with |
Signed-off-by: lance <leehaut@gmail.com>
There was a problem hiding this comment.
Pull request overview
Adds first-class java.time.LocalTime conversion support for Excel date, numeric, and string cells.
Changes:
- Adds LocalTime parsing, formatting, and serial utilities.
- Adds and registers date, number, and string converters.
- Expands test models and converter round-trip coverage.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Summary |
|---|---|
fesod-sheet/src/test/java/org/apache/fesod/sheet/util/TestUtil.java |
Adds shared LocalTime test fixtures. |
fesod-sheet/src/test/java/org/apache/fesod/sheet/util/DateUtilsTest.java |
Tests LocalTime utility behavior. |
fesod-sheet/src/test/java/org/apache/fesod/sheet/testkit/models/ConverterBaseData.java |
Adds LocalTime test-model data. |
fesod-sheet/src/test/java/org/apache/fesod/sheet/testkit/builders/TestDataBuilderTest.java |
Verifies LocalTime fixture population. |
fesod-sheet/src/test/java/org/apache/fesod/sheet/testkit/builders/TestDataBuilder.java |
Populates LocalTime test data. |
fesod-sheet/src/test/java/org/apache/fesod/sheet/converters/localtime/LocalTimeStringConverterTest.java |
Tests string conversion and formats. |
fesod-sheet/src/test/java/org/apache/fesod/sheet/converters/localtime/LocalTimeNumberConverterTest.java |
Tests numeric conversion and windowing. |
fesod-sheet/src/test/java/org/apache/fesod/sheet/converters/localtime/LocalTimeDateConverterTest.java |
Tests date-cell conversion. |
fesod-sheet/src/test/java/org/apache/fesod/sheet/converters/DefaultConverterLoaderTest.java |
Verifies converter registration. |
fesod-sheet/src/test/java/org/apache/fesod/sheet/converter/ConverterDataTest.java |
Covers converter format round trips. |
fesod-sheet/src/main/java/org/apache/fesod/sheet/util/DateUtils.java |
Adds LocalTime utilities and formats. |
fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/localtime/LocalTimeStringConverter.java |
Implements string conversion. |
fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/localtime/LocalTimeNumberConverter.java |
Implements numeric serial conversion. |
fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/localtime/LocalTimeDateConverter.java |
Implements date-cell conversion; empty @DateTimeFormat.value() should be normalized to use the HH:mm:ss default. |
fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/DefaultConverterLoader.java |
Registers the LocalTime converter family. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: lance <li6151770@126.com>
Signed-off-by: lance <li6151770@126.com>
Purpose of the pull request
Related: #1017
Add first-class converter support for
java.time.LocalTime, following the existingLocalDate/LocalDateTimepattern.What's changed?
Excel has no native time-only cell type. This PR treats
LocalTimeas the time-of-day counterpart ofLocalDate:DateUtils.EPOCH(1970-01-01) as the date component, and appliesHH:mm:ssso Excel shows time only.toLocalTime(). An Excel-native fraction (0.5=12:00:00) and a full datetime serial that happens to be12:00:00both becomeLocalTime.of(12, 0, 0).Converter family under
org.apache.fesod.sheet.converters.localtime:LocalTimeDateConverter— default write path (DATEcell, formatHH:mm:ss)LocalTimeNumberConverter— bidirectional Excel numeric serial, includinguse1904windowingLocalTimeStringConverter— bidirectionalSTRINGcell; defaultHH:mm:ss, also auto-detectsHH:mm, respects@DateTimeFormatandLocaleDateUtilsadditions (mirroringparseLocalDate/format(LocalDate)):DEFAULT_LOCAL_TIME_FORMAT/TIME_FORMAT_8/TIME_FORMAT_5parseLocalTime(...)/format(LocalTime, ...)/switchTimeFormat(...)/getLocalTime(...)Registration in
DefaultConverterLoadermatchesLocalDateTime:initAllConverter()Scope is limited to
java.time.LocalTime(JDK 8). Converter lookup is keyed by the declared Java class, so existingDateconverters do not coverLocalTimefields.