Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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字符串到日期的转换_Java_Date - Fatal编程技术网

Java字符串到日期的转换

Java字符串到日期的转换,java,date,Java,Date,我正在尝试将字符串转换为日期 我试过两种方法,但都一样。谁能帮我一下吗 String stringDate ="20181228184821"; Date date = null; SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd HH:mm:ss"); try { date = sdf1.parse(stringDate); System.out.println(date); } catch (ParseExcepti

我正在尝试将字符串转换为日期

我试过两种方法,但都一样。谁能帮我一下吗

String stringDate ="20181228184821";
Date date = null;
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
try {
    date = sdf1.parse(stringDate);
    System.out.println(date);
} catch (ParseException e) {
    System.out.println("ICICIBusinessLogic Error in converting input date string ****" + e);
}
我得到以下例外情况:

转换输入日期字符串****java.text.ParseException时出错: 不可解析日期:“20181228184821”

如果使用了错误的模式,请改为使用以下模式:

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmmss");
而且,
SimpleDataFormat
早已过时,请使用java-8

如果使用了错误的模式,请改为使用以下模式:

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmmss");
而且,
SimpleDataFormat
早已过时,请使用java-8


您的stringDate应该与您的格式完全匹配

20181228184821=>2018122818:48:21
应该有效


或者将格式更改为
yyyyMMddHHmmss

您的stringDate应该与您的格式完全匹配

20181228184821=>2018122818:48:21
应该有效

或者将格式更改为
yyyyMMddHHmmss

您应该使用和中的新类,而不是旧的
SimpleDataFormat
api。也就是说,您似乎混淆了输入和输出格式

String fmtIn = "yyyyMMddHHmmss", fmtOut = "yyyyMMdd HH:mm:ss";
String stringDate = "20181228184821";
TemporalAccessor dt = DateTimeFormatter.ofPattern(fmtIn).parse(stringDate);
System.out.println(LocalDateTime.from(dt));
System.out.println(DateTimeFormatter.ofPattern(fmtOut).format(dt));
您应该在中使用和新类,而不是旧的
simpleDataFormat
api。也就是说,您似乎混淆了输入和输出格式

String fmtIn = "yyyyMMddHHmmss", fmtOut = "yyyyMMdd HH:mm:ss";
String stringDate = "20181228184821";
TemporalAccessor dt = DateTimeFormatter.ofPattern(fmtIn).parse(stringDate);
System.out.println(LocalDateTime.from(dt));
System.out.println(DateTimeFormatter.ofPattern(fmtOut).format(dt));

简单日期格式构造函数中指定的模式应与要分析的字符串相同

试一试
String-stringDate=“20181228 18:48:21”

简单日期格式构造函数中指定的模式应与要分析的字符串相同

试一试
String-stringDate=“20181228 18:48:21”

您的格式需要一个空格和两个冒号。您试图解析的值没有这些格式。您提供的日期是不可接受的格式“20181228184821”,如2018-12-28 18:48:21感谢您的响应,但我从服务中获得了具有上述格式的日期字符串。使用SimpleDataFormat sdf1=新SimpleDataFormat(“yyyyMMddHHmmss”)我建议您避免使用
SimpleDateFormat
类。它不仅早已过时,而且还出了名的麻烦。今天我们有了更好的格式。您的格式需要一个空格和两个冒号。您试图解析的值没有这些格式。您提供的日期是不可接受的格式“20181228184821”,如2018-12-28 18:48:21感谢您的响应,但我从服务中获得了具有上述格式的日期字符串。使用SimpleDataFormat sdf1=新SimpleDataFormat(“yyyyMMddHHmmss”)我建议您避免使用
SimpleDateFormat
类。它不仅早已过时,而且还出了名的麻烦。今天,我们在这方面做得好多了。与使用
DateTimeFormatter
相比,使用
SimpleDateFormat
是否有任何值得注意的问题?@atheshrathnaweera这里有太多要提及的内容
SimpleDateFormat
给许多程序员带来了很多麻烦,它的同僚如
Date
也设计得很糟糕。@ElliottFrisch通过
TemporalAccessor
不是推荐的方法。只需执行
LocalDateTime dt=LocalDateTime.parse(stringDate,DateTimeFormatter.of模式(fmtIn))
(并从下一行的
调用中删除
)。感谢您展示了现代API的使用。与
DateTimeFormatter
相比,使用
SimpleDateFormat
是否有任何值得注意的问题?@atheshrathnaweera这里有太多要提及的内容
SimpleDateFormat
给许多程序员带来了很多麻烦,它的同僚如
Date
也设计得很糟糕。@ElliottFrisch通过
TemporalAccessor
不是推荐的方法。只需执行
LocalDateTime dt=LocalDateTime.parse(stringDate,DateTimeFormatter.of模式(fmtIn))
(并从下一行的
调用中删除
)。感谢您展示现代API的使用。