Search code examples
javadatetimekotlinutc

What is the correct way to format a date string to m/d/yyyy from "2020-05-08T11:01:48.3300000Z" datetime string in java/ Kotlin


I am trying to format a DateTime string that is received from the server. I have used the below formats and none is working - AppConstants.API_DATE_TIME_FORMAT =

 - `"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"`
 - `"yyyy-MM-dd'T'HH:mm:ss.SSSZ'Z'"`
 - `"yyyy-MM-dd'T'HH:mm:ss.SSSZ"`
 - `"yyyy-MM-dd'T'HH:mm:ss.SSSXX'Z'"`
 - `"yyyy-MM-dd'T'hh:mm:ss.SSSSSS'Z'"`

 and - 

     fun getFormattedDate(apiFormatDateTime: String): String {
        return try{
            val parser = SimpleDateFormat(AppConstants.API_DATE_TIME_FORMAT, Locale.getDefault())
            val formatter = SimpleDateFormat(AppConstants.UI_DATE_FORMAT, Locale.getDefault())
            val date = parser.parse(apiFormatDateTime)!!
            formatter.format(date)
        }catch (ex : Exception){
            apiFormatDateTime
        }
    }

Solution

  • This works

            String d="2020-05-08T11:01:48.3300000Z";
            DateFormat originalFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'");
            DateFormat targetFormat = new SimpleDateFormat("yyyyMMdd");
            Date date = originalFormat.parse(d);
            String formattedDate = targetFormat.format(date); 
            System.out.println("date==>"+formattedDate);
    

    Output::

    date==>20200508