将日期字符串转换为另一个字符串

时间:2014-10-14 04:22:56

标签: java android sql date datetime

如何将“2014-10-13T10:41:22.863 + 08:00”转换为“2014-10-13 10:41”?

我未能这样做:

String date = "2014-10-13T10:41:22.863+8:00";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date dateTime = null;
try {
    dateTime = dateFormat.parse(date);
} catch(ParseException e) { ... }
System.out.printf(dateTime.toString()); ... 

给出

  

ParseException 2014-10-13T10:41:22.863 + 8:00

2 个答案:

答案 0 :(得分:0)

请尝试这种方式,希望这有助于您解决问题。

末尾的Z通常是时区偏移量。如果你不需要它,也许你可以将它放在两边。

SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
try{
    Date d = df1.parse("2014-10-13T10:41:22.863+8:00");
    System.out.println("new date format " + df2.format(d));
}catch(Exception e){
   e.printStackTrace();
}

答案 1 :(得分:0)

如果您不需要在Date上进行某些操作/操作,然后再以正确的格式打印它,那么您可以直接将字符串转换为yyyy-MM-dd HH:mm

String date = "2014-10-13T10:41:22.863+8:00";

date = date.substring(0, 16);  // 2014-10-13T10:41, remove value after minutes
date = date.replace("T", " "); // 2014-10-13 10:41, replace the 'T' character

System.out.println(date);      // 2014-10-13 10:41

否则,如果您想事先解析它,请将模式更改为yyyy-MM-dd'T'HH:mm(请注意字符串常量 'T' 的附加内容。)

String date = "2014-10-13T10:41:22.863+8:00";

// parse the String to Date
SimpleDateFormat sourceFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm");
Date dateTime = null;
try {
    dateTime = sourceFormat.parse(date);
} catch (ParseException e) {
    e.printStackTrace();
}
System.out.println(dateTime.toString()); // Mon Oct 13 10:41:00 SGT 2014

// print the Date in expected format
SimpleDateFormat targetFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
System.out.println(targetFormat.format(dateTime)); // 2014-10-13 10:41

您获得ParseException的原因是因为您用于解析的格式(yyyy-MM-dd HH:mm)与源(yyyy-MM-dd'T'HH:mm ...)不同。您的SimpleDateFormatter预期空格而不是日期后的字符'T'。