Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 转换日期为2013-08-22T10:47:12+;02:00至2013-08-22 10:47:12_Java_Date_Datetime_Simpledateformat - Fatal编程技术网

Java 转换日期为2013-08-22T10:47:12+;02:00至2013-08-22 10:47:12

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-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'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”异常。
你能通过编辑代码来解决这个问题吗?