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的使用。