Reputation: 43
I want to convert the timestamps which are in different formats to one format I want to convert following timestamps to single format
Time Stamp 1 : 2022-08-17T18:28:07.288496+05:30
Time Stamp 2 : 2022-10-27T13:17:47.987736542Z
to
yyyy-MM-dd'T'HH:mm:ss
format
I have tried using DateFormatter
of Java but it gives ParseException. Also used SimpleDateFormatter
but was getting same exceptions.
Please suggest package or methods for the same.
Edit : Code I used for conversion
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.parse(timestamp, formatter);
System.out.println(localDateTime);
Upvotes: 1
Views: 444
Reputation: 18588
Using java.time
here is a good idea compared to java.util.Date
, Calendar
and so on, but you have to use specific classes that match the information inside a String
that represents a datetime or timestamp.
In your case, the String
contains the following information:
In particular, it's the last one (offset from UTC) which makes your attempt fail because you (1) don't consider it in the pattern of the DateTimeFormatter
and (2) you use a class that cannot store it (LocalDateTime
is not able / designed to hold information about a zone or an offset.
Having String
s with an offset can be stored in / parsed to OffsetDateTime
s, if they are ISO formatted (as your examples are), you don't even need to apply a custom DateTimeFormatter
. You can simply call OffsetDateTime.parse(String)
.
You can then define a desired format for an output by creating a custom DateTimeFormatter
and apply it in OffsetDateTime.format(DateTimeFormatter)
.
Here's an example:
public static void main(String[] args) {
// example Strings (your ones)
String timestampOne = "2022-08-17T18:28:07.288496+05:30";
String timestampTwo = "2022-10-27T13:17:47.987736542Z";
// directly parse them to get instances of OffsetDateTime
OffsetDateTime odtOne = OffsetDateTime.parse(timestampOne);
OffsetDateTime odtTwo = OffsetDateTime.parse(timestampTwo);
// prepare a formatter for your desired output
DateTimeFormatter dtfOut = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss");
// and print the values of the OffsetDateTimes formatted by that DateTimeFormatter
System.out.println(odtOne.format(dtfOut));
System.out.println(odtTwo.format(dtfOut));
}
Output:
2022-08-17T18:28:07
2022-10-27T13:17:47
Upvotes: 2