日期解析yyyy-MM-dd'T'HH:mm:ss在Android中

Kar*_*KPN 3 java android date

我的字符串日期 - > 2016-10-02T00:00:00.000Z.我想从这个字符串中只获取日期.我试图解析下面的编码,但它让我错误!我的格式与字符串中提到的格式完全相同.任何答案?

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSZ");
        try {
            Date myDate = sdf.parse( dateofJoining.replaceAll( "([0-9\\-T]+:[0-9]{2}:[0-9.+]+):([0-9]{2})", "$1$2" ) );
            System.out.println("Date only"+ myDate );
        } catch (ParseException e) {
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

我也厌倦了下面的代码,

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");  
try {  
    Date date = format.parse(dtStart);  
    System.out.println(date);  
} catch (ParseException e) {  
    // TODO Auto-generated catch block  
    e.printStackTrace();  
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误

java.text.ParseException: Unparseable date: "2016-10-02T00:00:00.000Z" (at offset 19)
05-12 00:18:36.613 4330-4330/com.vroom.riderb2b W/System.err:     at java.text.DateFormat.parse
Run Code Online (Sandbox Code Playgroud)

raf*_*007 7

更改要使用的简单日期格式: yyyy-MM-dd'T'HH:mm:ss.SSSZ

在你的代码中:

 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");  
try {  
    Date date = format.parse(dtStart.replaceAll("Z$", "+0000"));  
    System.out.println(date);  
} catch (ParseException e) {  
    // TODO Auto-generated catch block  
    e.printStackTrace();  
}
Run Code Online (Sandbox Code Playgroud)

如果你想得到date/mm/yy它:

使用:

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yy");
// use UTC as timezone
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Log.i("DATE", sdf.format(date));   //previous date object parsed
Run Code Online (Sandbox Code Playgroud)

如果你想要输出格式: hour:minute AM/PM

SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a", Locale.ENGLISH);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(sdf.format(date));
Run Code Online (Sandbox Code Playgroud)

编辑

更简单的选择是split将字符串分为两部分:

String dateString = "2016-10-02T00:00:00.000Z";
String[] separated = dateString.split("T");
separated[0]; // this will contain "2016-10-02"
separated[1]; // this will contain "00:00:00.000Z"
Run Code Online (Sandbox Code Playgroud)