Hy guys,
我想知道如何将时区转换为2013-08-22T10:47:12+02:00
到另一个日期2013-08-22 10:47:12
。
我尝试使用SimpleDateFormat
对象执行此操作,但我有相同的例外:
java.text.ParseException: Unparseable date: "2013-08-22T10:47:12+02:00"
更新
我在这里展示了我失败的代码:
String CURRENT_TIME_PATTERN ="yyyy-MM-dd'T'HH:mm:yyX";
String NEW_TIME_PATTERN ="yyyy-MM-dd HH:mm:ss";
String data="2013-08-22T10:47:12+02:00";
SimpleDateFormat sdf = new SimpleDateFormat(CURRENT_TIME_PATTERN);
SimpleDateFormat output = new SimpleDateFormat(NEW_TIME_PATTERN);
Date d = sdf.parse(data);
String formattedTime = output.format(d);
System.out.println(formattedTime);
通过这种方式,我将对无效参数' X'
进行例外处理如果我使用此模式String CURRENT_TIME_PATTERN ="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
,我将获得不可解析的日期例外。
答案 0 :(得分:0)
我建议使用Joda-Time进行任何日期和时间格式化/解析。
使用以下导入:
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
以下代码:
String input = "2013-08-22T10:47:12+02:00";
DateTimeFormatter formatterA = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ");
DateTimeFormatter formatterB = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
DateTime dateTime = formatterA.parseDateTime(input);
String output = dateTime.toString(formatterB);
答案 1 :(得分:0)
如果T
:
String
,请尝试此操作
String s = "2013-08-22T10:47:12+02:00";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:yyX"); // here X is for ISO 8601 time zone
Date parseDate = formatter.parse(s);
formatter.applyPattern("yyyy-MM-dd HH:mm:yy");
String formattedStr = formatter.format(parseDate);
System.out.println(formattedStr);
更新已移除String#replace()
方法,并将格式化程序模式更改为"yyyy-MM-dd'T'HH:mm:yyX"
。
答案 2 :(得分:0)
试试这个..
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
String date = "2013-08-22T10:47:12+02:00";
Date date1 = dateFormat.parse(date);
SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String myDate = dateFormat1.format(date1);
System.out.println("Date :: " + myDate);