Java不可解析日期异常

Java不可解析日期异常,java,date,datetime,simpledateformat,Java,Date,Datetime,Simpledateformat,我试图用正斜杠替换连字符,但它会导致不可解析的日期异常 String test = "2014-04-01 05:00:00"; Date date = new SimpleDateFormat("YYYY/MM/dd hh:mm:ss", Locale.ENGLISH).parse(test); System.out.println(date); 我有转换它所需的值,有人能告诉我为什么它返回错误吗?另外,我想在格式末尾附加一个am/pm标记,这可能吗?来自: 完成此操

我试图用正斜杠替换连字符,但它会导致
不可解析的日期异常

    String test = "2014-04-01 05:00:00";
    Date date = new SimpleDateFormat("YYYY/MM/dd hh:mm:ss", Locale.ENGLISH).parse(test);
    System.out.println(date);
我有转换它所需的值,有人能告诉我为什么它返回错误吗?另外,我想在格式末尾附加一个
am/pm标记
,这可能吗?

来自:

完成此操作后,正如@JigarJoshi所怀疑的那样,您可以将日期格式化为另一种格式:

String dateInDesiredFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss a", Locale.ENGLISH).format(date);
或作为完整的代码块编写:

DateFormat parse = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.ENGLISH);
DateFormat format = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss a", Locale.ENGLISH);

String test = "2014-04-01 05:00:00";
Date date = parse.parse(test);
System.out.println(format.format(date));
生成以下输出:

2014/04/01 05:00:00 AM
发件人:

完成此操作后,正如@JigarJoshi所怀疑的那样,您可以将日期格式化为另一种格式:

String dateInDesiredFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss a", Locale.ENGLISH).format(date);
或作为完整的代码块编写:

DateFormat parse = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.ENGLISH);
DateFormat format = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss a", Locale.ENGLISH);

String test = "2014-04-01 05:00:00";
Date date = parse.parse(test);
System.out.println(format.format(date));
生成以下输出:

2014/04/01 05:00:00 AM

您需要首先以正确的格式将
String
解析为
Date
作为输入
String

yyyy-MM-dd HH:mm:ss
然后可以使用format()以其他格式打印

yyyy/MM/dd hh:mm:ss

并且不要期望
toString()
方法的
Date
类返回格式化值,这是固定的实现

您需要首先以正确的格式将
字符串
解析为
日期
作为输入
字符串

yyyy-MM-dd HH:mm:ss
String test = "2014-04-01 05:00:00";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
Date oldDate = formatter.parse(test);
formatter.applyPattern("yyyy/MM/dd HH:mm:ss a");
Date newDate = formatter.parse(formatter.format(oldDate));
System.out.println(formatter.format(newDate));
然后可以使用format()以其他格式打印

yyyy/MM/dd hh:mm:ss

并且不要期望
toString()
方法的
Date
类返回格式化值,这是一个固定的实现

在解析格式字符串的末尾添加'a',以开始解析
AM/PM
@JasonSperske。从这个代码片段中不需要它。我认为OP想将日期格式化为
/
-
中,所以他首先需要解析,然后格式化。我知道他们想将其添加到output@JigarJoshi然后OP将需要使用两个
SimpleDateFormat
实例。在解析格式字符串的末尾添加'a',以开始解析
AM/PM
@JasonPerske。不需要从这个代码段进行解析。我认为OP希望将日期从
-
格式化为
//code>,因此他首先需要解析,然后格式化。我看到他们希望将其添加到这个output@JigarJoshi然后OP需要使用两个
SimpleDataFormat
实例。
String test = "2014-04-01 05:00:00";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
Date oldDate = formatter.parse(test);
formatter.applyPattern("yyyy/MM/dd HH:mm:ss a");
Date newDate = formatter.parse(formatter.format(oldDate));
System.out.println(formatter.format(newDate));