Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Format date and time in String format from an API response [duplicate]

I'm using the Guardian API to get recent news stories about football.

I want to show date and time info to the user, but not in the format the API throws it back to me.

When requesting webPublicationDate after querying http://content.guardianapis.com/search?page-size=10&section=football&show-tags=contributor&api-key=test I get the response in this format:

2017-06-22T16:18:04Z

Now, I want the date and time info in this format: e.g. Jun 21, 2017 and 16:18 or 4:18 pm.

While I basically know to format a Date object properly into this format:

/**
 * Return the formatted date string (i.e. "Mar 3, 1984") from a Date object.
 */
private String formatDate(Date dateObject) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("LLL dd, yyyy");
    return dateFormat.format(dateObject);
}

/**
 * Return the formatted date string (i.e. "4:30 PM") from a Date object.
 */
private String formatTime(Date dateObject) {
    SimpleDateFormat timeFormat = new SimpleDateFormat("h:mm a");
    return timeFormat.format(dateObject);
}

But I can't seem to convert the response I get into a Date object.

like image 459
Fedor von Bock Avatar asked Oct 28 '25 15:10

Fedor von Bock


1 Answers

You can format the text this way:

package com.mkyong.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TestDateExample5 {

public static void main(String[] argv) {

    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
    String dateInString = "2014-10-05T15:23:01Z";

    try {

        Date date = formatter.parse(dateInString.replaceAll("Z$", "+0000"));
        System.out.println(date);

        System.out.println("time zone : " + TimeZone.getDefault().getID());
        System.out.println(formatter.format(date));

    } catch (ParseException e) {
        e.printStackTrace();
    }

}

}

Z suffix means UTC, java.util.SimpleDateFormat doesn’t parse it correctly, you need to replace the suffix Z with ‘+0000’.

Code from here: https://www.mkyong.com/java/how-to-convert-string-to-date-java/

like image 186
Karim ElGhandour Avatar answered Oct 31 '25 03:10

Karim ElGhandour