Skip to content

NIFI-13579 Improve Timestamp Zone Offset Formatting and Parsing#9367

Closed
exceptionfactory wants to merge 2 commits intoapache:mainfrom
exceptionfactory:NIFI-13579
Closed

NIFI-13579 Improve Timestamp Zone Offset Formatting and Parsing#9367
exceptionfactory wants to merge 2 commits intoapache:mainfrom
exceptionfactory:NIFI-13579

Conversation

@exceptionfactory
Copy link
Contributor

Summary

NIFI-13579 Improves timestamp formatting and parsing for Record Readers and Record Writers as it relates to zone offset handling.

Following significant changes to move from java.util.Date to java.time classes for earlier 2.0.0 milestone releases, zone offset handling no longer worked in ways similar to earlier versions. When reading a timestamp string with a zone offset, LocalDateTime.parse() would ignore the zone offset and only consider the local date and time components. When writing a timestamp as a string, the converter would throw an exception due to the LocalDateTime object not having a value for offset seconds.

The current set of changes adjusts Field Converter behavior to address these issues. When converting from a string to a timestamp, the parsing makes use of the DateTimeFormatter.parseBest() method to first try parsing with ZonedDateTime to handle zone offsets, and then parsing with LocalDateTime.

When converting from a Timestamp or LocalDateTime to a string, the conversion creates a ZonedDateTime from a LocalDateTime using the system default zone offset, avoiding unexpected zone offset conversion.

Changes include new unit tests for these scenarios, as well as a new test for the ValidateRecord Processor with CSV Reader and Writer, exercising both sides of the conversion. These test methods get the current zone offset value from the JVM to ensure that tests work as expected regardless of the system timezone.

Tracking

Please complete the following tracking steps prior to pull request creation.

Issue Tracking

Pull Request Tracking

  • Pull Request title starts with Apache NiFi Jira issue number, such as NIFI-00000
  • Pull Request commit message starts with Apache NiFi Jira issue number, as such NIFI-00000

Pull Request Formatting

  • Pull Request based on current revision of the main branch
  • Pull Request refers to a feature branch with one commit containing changes

Verification

Please indicate the verification steps performed prior to pull request creation.

Build

  • Build completed using mvn clean install -P contrib-check
    • JDK 21

Licensing

  • New dependencies are compatible with the Apache License 2.0 according to the License Policy
  • New dependencies are documented in applicable LICENSE and NOTICE files

Documentation

  • Documentation formatting appears as expected in rendered files

- Improved Timestamp to String formatting to support patterns with zone offsets
- Improved String to Timestamp parsing to support adjusted hours and minutes when zone offset is included
@dan-s1
Copy link
Contributor

dan-s1 commented Oct 16, 2024

@exceptionfactory Changes look good and date is now formatted correctly in the submitter's case.
LGTM+1

@dan-s1 dan-s1 closed this Oct 16, 2024
@exceptionfactory exceptionfactory added the hacktoberfest-accepted Hacktoberfest Accepted label Oct 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hacktoberfest-accepted Hacktoberfest Accepted

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants