Skip to content

feat: add ZonedDateTime converters - #1020

Open
alexsmolya wants to merge 1 commit into
apache:mainfrom
alexsmolya:agent/zoneddatetime-converter
Open

feat: add ZonedDateTime converters#1020
alexsmolya wants to merge 1 commit into
apache:mainfrom
alexsmolya:agent/zoneddatetime-converter

Conversation

@alexsmolya

Copy link
Copy Markdown

Purpose of the pull request

Related: #1017

What's changed?

Adds the approved java.time.ZonedDateTime converter family and registers it with the default converter loader.

  • DATE and NUMBER writes use toLocalDateTime(), intentionally dropping zone/offset while preserving local wall-clock fields.
  • Numeric reads attach ZoneId.systemDefault().
  • STRING conversion supports the accepted ISO and configured formatting/parsing semantics.
  • Added dedicated ZonedDateTimeConverterTest coverage for supported directions, registration, formatting, and timezone-lossiness behavior.

Checklist

  • I have read the Contributor Guide.
  • I have written the necessary doc or comment.
  • I have added the necessary unit tests and all cases have passed.

Focused validation: 5 ZonedDateTime tests passed; Java 1.8-targeted compilation, Spotless, and git diff --check passed.

@delei delei added the PR: first-time contributor first-time contributor label Aug 18, 2026
@delei
delei requested a lite review from Copilot August 18, 2026 00:47

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds first-class java.time.ZonedDateTime converter support to the fesod-sheet module, integrating it into the default converter registry and providing unit coverage to validate the expected zone/offset handling behavior.

Changes:

  • Introduces ZonedDateTime converters for STRING, NUMBER, and DATE write scenarios.
  • Registers the new converters in DefaultConverterLoader for default read/write discovery.
  • Adds unit tests to validate conversion behavior and default registration.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/DefaultConverterLoader.java Registers ZonedDateTime converters in the default loader maps.
fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/zoneddatetime/ZonedDateTimeDateConverter.java Adds DATE write converter (drops zone via toLocalDateTime() and applies data format).
fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/zoneddatetime/ZonedDateTimeNumberConverter.java Adds NUMBER read/write converter using Excel serial dates and ZoneId.systemDefault() on read.
fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/zoneddatetime/ZonedDateTimeStringConverter.java Adds STRING read/write converter with ISO/custom pattern formatting and parsing fallback.
fesod-sheet/src/test/java/org/apache/fesod/sheet/converter/ZonedDateTimeConverterTest.java Adds targeted tests for conversion semantics and loader registration.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +37 to +44
import org.apache.fesod.sheet.metadata.GlobalConfiguration;
import org.apache.fesod.sheet.metadata.data.ReadCellData;
import org.apache.fesod.sheet.metadata.data.WriteCellData;
import org.apache.fesod.sheet.metadata.property.DateTimeFormatProperty;
import org.apache.fesod.sheet.metadata.property.ExcelContentProperty;
import org.junit.jupiter.api.Test;

class ZonedDateTimeConverterTest {
Comment on lines +70 to +77
private DateTimeFormatter formatter(ExcelContentProperty contentProperty, Locale locale) {
if (contentProperty == null || contentProperty.getDateTimeFormatProperty() == null) {
return DateTimeFormatter.ISO_ZONED_DATE_TIME;
}
return DateTimeFormatter.ofPattern(
contentProperty.getDateTimeFormatProperty().getFormat(), locale);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PR: first-time contributor first-time contributor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants