Java 转换日期为2013-08-22T10:47:12+;02:00至2013-08-22 10:47:12
嗨,伙计们 我想知道如何将时区为2013-08-22T10:47:12+02:00的日期转换为另一个日期Java 转换日期为2013-08-22T10:47:12+;02:00至2013-08-22 10:47:12,java,date,datetime,simpledateformat,Java,Date,Datetime,Simpledateformat,嗨,伙计们 我想知道如何将时区为2013-08-22T10:47:12+02:00的日期转换为另一个日期2013-08-22 10:47:12 我尝试使用SimpleDataFormat对象来实现这一点,但我有一个相同的例外: java.text.ParseException:无法解析的日期:“2013-08-22T10:47:12+02:00” 你能帮我吗?谢谢 更新 我在这里显示我的失败代码: String CURRENT_TIME_PATTERN ="yyyy-MM-dd'
2013-08-22 10:47:12
我尝试使用SimpleDataFormat
对象来实现这一点,但我有一个相同的例外:
java.text.ParseException:无法解析的日期:“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”产生异常
如果我使用这个模式字符串CURRENT\u TIME\u pattern=“yyyy-MM-dd'T'HH:MM:ss.SSS'Z'代码>,我将获得不可解析的日期异常。我建议使用来执行任何日期和时间格式化/解析
使用以下导入:
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);
如果在字符串中始终有T
,则应尝试此操作:
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:yyyx”
尝试此操作
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);
你用哪种格式来解析?所以你只想把T变成一个空格,然后从+开始删除所有内容?您应该遵循有关日期解析的教程。这是我所使用的格式,除了:yyy-MM-dd'T'HH:MM:ssz
,这是新的格式,我想转换日期yyy-MM-dd HH:MM:ss
,因为您的输入格式是ISO 8601样式,请尝试X
(“ISO 8601时区”)而不是z
(“通用时区”)。好的,谢谢,但他为什么不工作id我使用SimpleDataFormat对象从yyyy-MM-dd't'HH:MM:ssZ
到yyyy-MM-dd HH:MM:ss
。他总是给我同样的异常。我试过了,但他给了我:java.lang.IllegalArgumentException:非法模式字符“X”异常。
你能通过编辑代码来解决这个问题吗?