Table of Contents
Is java.time Unable to Parse Fractions of Seconds?
Introduction
The Problem
The Solution
The Issue and Its Implications
Alternatives and Updates
Update: Java 9 Fix
Home Java javaTutorial Can Java.time Parse Fractions of Seconds Before Java 9?

Can Java.time Parse Fractions of Seconds Before Java 9?

Nov 01, 2024 pm 04:11 PM

 Can Java.time Parse Fractions of Seconds Before Java 9?

Is java.time Unable to Parse Fractions of Seconds?

Introduction

With the initial release of Java 8, the java.time package appeared to have an issue parsing fractions of seconds. This problem arose when adding "SS" to the DateTimeFormatter pattern to represent fractions of seconds and encountering an exception.

The Problem

When attempting to parse a fraction of a second, as specified by the "SS" pattern, an exception was thrown. This was surprising as the documentation indicated that this should have worked.

The Solution

This issue was later reported and fixed in Java 9. However, until Java 9 is released, a workaround is necessary. As mentioned in the JDK bug report, the following workaround can be used:

DateTimeFormatter dtf =
  new DateTimeFormatterBuilder()
  .appendPattern("yyyyMMddHHmmss")
  .appendValue(ChronoField.MILLI_OF_SECOND, 3)
  .toFormatter();

The Issue and Its Implications

The crux of the issue lies in how the fraction of seconds is parsed when characters are adjacent. Adjacent value parsing is only supported by appendValue(...) methods, which assume numerical representations. The appendFraction(...) method, used internally by the fractional part, does not handle adjacent value parsing. This limitation prevents the correct interpretation of fractions of seconds when the pattern contains adjacent digits.

Alternatives and Updates

While the workaround above addresses the issue, it may not be ideal for all use cases. Other alternatives include:

  • Using SimpleDateFormat, but be aware that it may interpret the fraction incorrectly.
  • Waiting until Java 9 (or later) for the official fix.
  • Using a third-party library like Joda-Time or Time4J.

Update: Java 9 Fix

In Java 9, the issue has been resolved. The fraction of seconds can now be parsed correctly using the "SS" pattern or, for greater precision, using the ChronoField.MICRO_OF_SECOND or ChronoField.NANO_OF_SECOND fields.

The above is the detailed content of Can Java.time Parse Fractions of Seconds Before Java 9?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

ArtGPT

ArtGPT

AI image generator for creative art from text prompts.

Stock Market GPT

Stock Market GPT

AI powered investment research for smarter decisions

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

How to add a JAR file to the classpath in Java? How to add a JAR file to the classpath in Java? Sep 21, 2025 am 05:09 AM

Use the -cp parameter to add the JAR to the classpath, so that the JVM can load its internal classes and resources, such as java-cplibrary.jarcom.example.Main, which supports multiple JARs separated by semicolons or colons, and can also be configured through CLASSPATH environment variables or MANIFEST.MF.

How to create a file in Java How to create a file in Java Sep 21, 2025 am 03:54 AM

UseFile.createNewFile()tocreateafileonlyifitdoesn’texist,avoidingoverwriting;2.PreferFiles.createFile()fromNIO.2formodern,safefilecreationthatfailsifthefileexists;3.UseFileWriterorPrintWriterwhencreatingandimmediatelywritingcontent,withFileWriterover

How to implement an interface in Java? How to implement an interface in Java? Sep 18, 2025 am 05:31 AM

Use the implements keyword to implement the interface. The class needs to provide specific implementations of all methods in the interface. It supports multiple interfaces and is separated by commas to ensure that the methods are public. The default and static methods after Java 8 do not need to be rewrite.

Building Extensible Applications with the Java Service Provider Interface (SPI) Building Extensible Applications with the Java Service Provider Interface (SPI) Sep 21, 2025 am 03:50 AM

JavaSPI is a built-in service discovery mechanism in JDK, and implements interface-oriented dynamic expansion through ServiceLoader. 1. Define the service interface and create a file with the full name of the interface under META-INF/services/, and write the fully qualified name of the implementation class; 2. Use ServiceLoader.load() to load the implementation class, and the JVM will automatically read the configuration and instantiate it; 3. The interface contract should be clarified during design, support priority and conditional loading, and provide default implementation; 4. Application scenarios include multi-payment channel access and plug-in verification; 5. Pay attention to performance, classpath, exception isolation, thread safety and version compatibility; 6. In Java9, provide can be used in combination with module systems.

Understanding Java Generics and Wildcards Understanding Java Generics and Wildcards Sep 20, 2025 am 01:58 AM

Javagenericsprovidecompile-timetypesafetyandeliminatecastingbyallowingtypeparametersonclasses,interfaces,andmethods;wildcards(?,?extendsType,?superType)handleunknowntypeswithflexibility.1.UseunboundedwildcardwhentypeisirrelevantandonlyreadingasObject

A deep understanding of HTTP persistent connections: policies and practices for sending multiple requests on the same socket A deep understanding of HTTP persistent connections: policies and practices for sending multiple requests on the same socket Sep 21, 2025 pm 01:51 PM

This article explores in-depth the mechanism of sending multiple HTTP requests on the same TCP Socket, namely, HTTP persistent connection (Keep-Alive). The article clarifies the difference between HTTP/1.x and HTTP/2 protocols, emphasizes the importance of server-side support for persistent connections, and how to correctly handle Connection: close response headers. By analyzing common errors and providing best practices, we aim to help developers build efficient and robust HTTP clients.

Java Tutorial: How to Flatten a Nested ArrayList and Fill its Elements into an Array Java Tutorial: How to Flatten a Nested ArrayList and Fill its Elements into an Array Sep 18, 2025 am 07:24 AM

This tutorial details how to efficiently process nested ArrayLists containing other ArrayLists in Java and merge all its internal elements into a single array. The article will provide two core solutions through the flatMap operation of the Java 8 Stream API: first flattening into a list and then filling the array, and directly creating a new array to meet the needs of different scenarios.

How to read a properties file in Java? How to read a properties file in Java? Sep 16, 2025 am 05:01 AM

Use the Properties class to read Java configuration files easily. 1. Put config.properties into the resource directory, load it through getClassLoader().getResourceAsStream() and call the load() method to read the database configuration. 2. If the file is in an external path, use FileInputStream to load it. 3. Use getProperty(key,defaultValue) to handle missing keys and provide default values ​​to ensure exception handling and input verification.

See all articles