In this article, we will learn how to format OffsetDateTime in different Format Style provided in Java 1.8 version
1. Format OffsetDateTime in different Format Style :
- FormatStyle class provides 4 different enum constants for formatting OffsetDateTime, those are
- FormatStyle.SHORT
- FormatStyle.MEDIUM
- FormatStyle.LONG
- FormatStyle.FULL
- In below illustration, we are using above provided in-built formats to format OffsetDateTime as listed below,
- DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);
- DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
- DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
- DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL);
- Note: for creating above formats we need DateTimeFormatter
2. OffsetDateTime examples in different Format Style :
- OffsetDateTime to FormatStyle.SHORT format
- OffsetDateTime to FormatStyle.MEDIUM format
- OffsetDateTime to FormatStyle.LONG format
- OffsetDateTime to FormatStyle.FULL format
2.1 OffsetDateTime to FormatStyle.SHORT format :
- This format style converts OffsetDateTime in default (yyyy-MM-ddTHH:mm:ss.nnn+/-HH:mm) format to (dd/MM/yy, hh:mm a) format ignoring second & nanosecond fields
FormatOffsetDateTimeToShortStyle.java
package in.bench.resources.java8.offsetdatetime.examples;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
public class FormatOffsetDateTimeToShortStyle {
public static void main(String[] args) {
// 1. get Offset Date/time
OffsetDateTime offsetDateTime = OffsetDateTime.now();
System.out.println("Offset Date/time is :- \n" + offsetDateTime);
// 2. DateTimeFormatter
DateTimeFormatter dateTimeFormatter = DateTimeFormatter
.ofLocalizedDateTime(FormatStyle.SHORT);
// 3. OffsetDateTime to FormatStyle.SHORT format in String-form
String str = offsetDateTime.format(dateTimeFormatter);
System.out.print("\nOffsetDateTime to FormatStyle.SHORT format :- \n" + str);
}
}
Output:
Offset Date/time is :-
2022-08-16T19:51:48.736325500+05:30
OffsetDateTime to FormatStyle.SHORT format :-
16/08/22, 7:51 pm
2.2 OffsetDateTime to FormatStyle.MEDIUM format :
- This format style converts OffsetDateTime in default (yyyy-MM-ddTHH:mm:ss.nnn+/-HH:mm) format to (dd-MMM-yyyy, hh:mm:ss a) format ignoring nanosecond field
FormatOffsetDateTimeToMediumStyle.java
package in.bench.resources.java8.offsetdatetime.examples;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
public class FormatOffsetDateTimeToMediumStyle {
public static void main(String[] args) {
// 1. get Offset Date/time
OffsetDateTime offsetDateTime = OffsetDateTime.now();
System.out.println("Offset Date/time is :- \n" + offsetDateTime);
// 2. DateTimeFormatter
DateTimeFormatter dateTimeFormatter = DateTimeFormatter
.ofLocalizedDateTime(FormatStyle.MEDIUM);
// 3. OffsetDateTime to FormatStyle.MEDIUM format in String-form
String str = offsetDateTime.format(dateTimeFormatter);
System.out.print("\nOffsetDateTime to FormatStyle.MEDIUM format :- \n" + str);
}
}
Output:
Offset Date/time is :-
2022-08-16T19:53:06.286628100+05:30
OffsetDateTime to FormatStyle.MEDIUM format :-
16-Aug-2022, 7:53:06 pm
2.3 OffsetDateTime to FormatStyle.LONG format :
- While converting default OffsetDateTime format to LONG style format throws runtime exception stating “Zone information is not available“
- So, it should be strictly used when we are dealing with Zone information like ZonedDateTime
FormatOffsetDateTimeToLongStyle.java
package in.bench.resources.java8.offsetdatetime.examples;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
public class FormatOffsetDateTimeToLongStyle {
public static void main(String[] args) {
// 1. get Offset Date/time
OffsetDateTime offsetDateTime = OffsetDateTime.now();
System.out.println("Offset Date/time is :- \n" + offsetDateTime);
// 2. DateTimeFormatter
DateTimeFormatter dateTimeFormatter = DateTimeFormatter
.ofLocalizedDateTime(FormatStyle.LONG);
// 3. OffsetDateTime to FormatStyle.LONG format in String-form
String str = offsetDateTime.format(dateTimeFormatter);
System.out.print("\nOffsetDateTime to FormatStyle.LONG format :- \n" + str);
}
}
Output:
Offset Date/time is :-
2022-08-16T19:53:38.894052900+05:30
Exception in thread "main" java.time.DateTimeException:
Unable to extract ZoneId from temporal 2022-08-16T19:53:38.894052900+05:30
at java.base/java.time.format.DateTimePrintContext.getValue(DateTimePrintContext.java:289)
at java.base/java.time.format.DateTimeFormatterBuilder$ZoneTextPrinterParser
.format(DateTimeFormatterBuilder.java:4142)
at java.base/java.time.format.DateTimeFormatterBuilder$CompositePrinterParser
.format(DateTimeFormatterBuilder.java:2402)
at java.base/java.time.format.DateTimeFormatterBuilder$LocalizedPrinterParser
.format(DateTimeFormatterBuilder.java:4844)
at java.base/java.time.format.DateTimeFormatterBuilder$CompositePrinterParser
.format(DateTimeFormatterBuilder.java:2402)
at java.base/java.time.format.DateTimeFormatter.formatTo(DateTimeFormatter.java:1849)
at java.base/java.time.format.DateTimeFormatter.format(DateTimeFormatter.java:1823)
at java.base/java.time.OffsetDateTime.format(OffsetDateTime.java:1681)
at in.bench.resources.java8.offsetdatetime.examples.FormatOffsetDateTimeToLongStyle
.main(FormatOffsetDateTimeToLongStyle.java:22)
2.4 OffsetDateTime to FormatStyle.FULL format :
- This is very much similar like above example which requires Zone information otherwise throws runtime exception stating “Zone information is not available” during conversion from OffsetDateTime in default format to FULL style format
- So, it should be strictly used when we are dealing with Zone information like ZonedDateTime
FormatOffsetDateTimeToFullStyle.java
package in.bench.resources.java8.offsetdatetime.examples;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
public class FormatOffsetDateTimeToFullStyle {
public static void main(String[] args) {
// 1. get Offset Date/time
OffsetDateTime offsetDateTime = OffsetDateTime.now();
System.out.println("Offset Date/time is :- \n" + offsetDateTime);
// 2. DateTimeFormatter
DateTimeFormatter dateTimeFormatter = DateTimeFormatter
.ofLocalizedDateTime(FormatStyle.FULL);
// 3. OffsetDateTime to FormatStyle.FULL format in String-form
String str = offsetDateTime.format(dateTimeFormatter);
System.out.print("\nOffsetDateTime to FormatStyle.FULL format :- \n" + str);
}
}
Output:
Offset Date/time is :-
2022-08-16T19:54:30.059456500+05:30
Exception in thread "main" java.time.DateTimeException:
Unable to extract ZoneId from temporal 2022-08-16T19:54:30.059456500+05:30
at java.base/java.time.format.DateTimePrintContext.getValue(DateTimePrintContext.java:289)
at java.base/java.time.format.DateTimeFormatterBuilder$ZoneTextPrinterParser
.format(DateTimeFormatterBuilder.java:4142)
at java.base/java.time.format.DateTimeFormatterBuilder$CompositePrinterParser
.format(DateTimeFormatterBuilder.java:2402)
at java.base/java.time.format.DateTimeFormatterBuilder$LocalizedPrinterParser
.format(DateTimeFormatterBuilder.java:4844)
at java.base/java.time.format.DateTimeFormatterBuilder$CompositePrinterParser
.format(DateTimeFormatterBuilder.java:2402)
at java.base/java.time.format.DateTimeFormatter.formatTo(DateTimeFormatter.java:1849)
at java.base/java.time.format.DateTimeFormatter.format(DateTimeFormatter.java:1823)
at java.base/java.time.OffsetDateTime.format(OffsetDateTime.java:1681)
at in.bench.resources.java8.offsetdatetime.examples.FormatOffsetDateTimeToFullStyle
.main(FormatOffsetDateTimeToFullStyle.java:22)
Related Articles:
- Java 8 – OffsetDateTime with method details and examples
- Java 8 – How to get Date, Time and Offset fields from OffsetDateTime ?
- Java 8 – How to form OffsetDateTime passing Date, Time and Offset fields ?
- Java 8 – How to form OffsetDateTime passing LocalDate, LocalTime and ZoneOffset ?
- Java 8 – How to form OffsetDateTime passing LocalDateTime and ZoneOffset ?
- Java 8 – How to form OffsetDateTime passing Instant and ZoneId ?
- Java 8 – How to parse OffsetDateTime in String form ?
- Java 8 – How to convert String to OffsetDateTime ?
- Java 8 – How to convert ZonedDateTime to String ?
- Java 8 – How to convert OffsetDateTime in different formats ?
- Java 8 – How to convert OffsetDateTime in different Format Style ?
- Java 8 – How to convert OffsetDateTime to LocalDateTime ?
- Java 8 – How to convert OffsetDateTime to ZonedDateTime ?
- Java 8 – How to convert OffsetDateTime to an Instant ?
- Java 8 – How to extract LocalDate and LocalTime and LocalDateTime from OffsetDateTime ?
- Java 8 – How to extract OffsetTime from OffsetDateTime ?
- Java 8 – How to convert OffsetDateTime to number of Seconds ?
- Java 8 – How to convert OffsetDateTime to java.util.Date and vice-versa ?
- Java 8 – How to convert OffsetDateTime to java.sql.Timestamp and vice-versa ?
- Java 8 – How to convert OffsetDateTime to Calendar and vice-versa ?
- Java 8 – How to convert OffsetDateTime to GregorianCalendar and vice-versa ?
- Java 8 – How to convert OffsetDateTime to XMLGregorianCalendar and vice-versa ?
- Java 8 – How to convert java.util.Date to an OffsetDateTime in different ways ?
- Java 8 – How to add Date and Time fields to OffsetDateTime ?
- Java 8 – How to subtract Date and Time fields from OffsetDateTime ?
- Java 8 – How to alter Date, Time and Offset fields of OffsetDateTime ?
- Java 8 – How to check whether an OffsetDateTime is Before another OffsetDateTime ?
- Java 8 – How to check whether an OffsetDateTime is After another OffsetDateTime ?
- Java 8 – How to compare two OffsetDateTime instances ?
- Java 8 – How to find difference between two OffsetDateTime using Period & Duration ?
- Java 9 – Find difference between two OffsetDateTime instances upto nanosecond precision ?
- More Java 8 Date/Time API examples
References:
- https://docs.oracle.com/javase/8/docs/api/java/time/OffsetDateTime.html
- https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
- https://docs.oracle.com/javase/8/docs/api/java/time/format/FormatStyle.html
- https://docs.oracle.com/javase/7/docs/api/java/util/Date.html
- https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html
Happy Coding !!
Happy Learning !!