无法解析的日期:“2017-01-02T01:41:24Z”(偏移量为 10)
Unparseable date: "2017-01-02T01:41:24Z" (at offset 10)
2017-01-02T01:41:24Z
是我实际的日期格式,我想将此日期转换为 yyyy-MM-dd hh:mma
格式。
请看下面我试过的代码,
String newsDate = "2017-01-02T01:41:24Z";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mma");
Date date = null;
try
{
date = sdf.parse(newsDate);
}
catch (ParseException e)
{
e.printStackTrace();
}
但在 date = sdf.parse(newsDate);
行出现以下错误:
"Unparseable date: "2017-01-02T01:41:24Z" (at offset 10)".
请指导我,我哪里出错了?
因为您使用的是不同的日期格式,这是不正确的。
改变这个
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mma");
至此
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
试试这个:
String newsDate = "2017-01-02T01:41:24Z";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mma");
try {
texview.setText(sdf1.format(sdf.parse(newsDate)));
} catch (ParseException e) {
e.printStackTrace();
System.out.println("bad pattern");
}
其他答案在时区/偏移量解释方面是错误的。尾随的 "Z" 表示 UTC+00:00 并且不能被解释为文字。 documentation of Android 定义了可以处理这种输入的合适的模式符号 X。如果您不关心这个细节,那么您将不会得到异常,但会得到错误的数据(甚至更糟)。
因此,包括小时部分修复在内的最终解决方案如下所示:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
注意:如果您的偏移量不带冒号,请使用 XX 而不是 XXX。
这非常适合我。
String dateNew= "2017-01-02T01:41:24Z";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mma");
try {
texview.setText(sdf1.format(sdf.parse(dateNew)));
} catch (ParseException e) {
e.printStackTrace();
System.out.println("bad pattern");
}
2017-01-02T01:41:24Z
是我实际的日期格式,我想将此日期转换为 yyyy-MM-dd hh:mma
格式。
请看下面我试过的代码,
String newsDate = "2017-01-02T01:41:24Z";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mma");
Date date = null;
try
{
date = sdf.parse(newsDate);
}
catch (ParseException e)
{
e.printStackTrace();
}
但在 date = sdf.parse(newsDate);
行出现以下错误:
"Unparseable date: "2017-01-02T01:41:24Z" (at offset 10)".
请指导我,我哪里出错了?
因为您使用的是不同的日期格式,这是不正确的。
改变这个
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mma");
至此
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
试试这个:
String newsDate = "2017-01-02T01:41:24Z";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mma");
try {
texview.setText(sdf1.format(sdf.parse(newsDate)));
} catch (ParseException e) {
e.printStackTrace();
System.out.println("bad pattern");
}
其他答案在时区/偏移量解释方面是错误的。尾随的 "Z" 表示 UTC+00:00 并且不能被解释为文字。 documentation of Android 定义了可以处理这种输入的合适的模式符号 X。如果您不关心这个细节,那么您将不会得到异常,但会得到错误的数据(甚至更糟)。
因此,包括小时部分修复在内的最终解决方案如下所示:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
注意:如果您的偏移量不带冒号,请使用 XX 而不是 XXX。
这非常适合我。
String dateNew= "2017-01-02T01:41:24Z";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mma");
try {
texview.setText(sdf1.format(sdf.parse(dateNew)));
} catch (ParseException e) {
e.printStackTrace();
System.out.println("bad pattern");
}