[英]Converting string to java.util.date
我正在尝试在java.util.date中转换字符串,但是出现以下错误:
HelloWorld.java:10: error: incompatible types: Date cannot be converted to String
return FORMATTER.parse(date);
^
HelloWorld.java:16: error: incompatible types: String cannot be converted to Date
Date date = convertStringToDate("2015-08-03 09:19:00.000");
我的代码如下:
import java.text.SimpleDateFormat;
import java.util.Date;
public class HelloWorld{
private static final SimpleDateFormat FORMATTER = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
public static String convertStringToDate(String date) {
if(date!=null){
return FORMATTER.parse(date);
}
return null;
}
public static void main(String []args){
Date date = convertStringToDate("2015-08-03 09:19:00.000");
System.out.println(date);
}
}
将方法签名更改为此:
public static Date convertStringToDate(String date)
SimpleDateFormat.parse
返回Date
,而不是String
。
另外,您还需要处理parse
方法可能抛出的检查过的ParseException
,方法是在签名中声明throws ParseException
(并在main
处理异常),或者将异常包装到RuntimeException
(有效的输入是在输入错误时终止程序)给定):
public static Date convertStringToDate(String date) {
if (date != null) {
try {
return FORMATTER.parse(date);
} catch (ParseException e) {
// nothing we can do if the input is invalid
throw new RuntimeException(e);
}
}
return null;
}
最后,您应该注意,您只能使用当前格式( yyyy-MM-dd hh:mm:ss
)解析1到12之间的小时值。 如果要根据24小时制进行分析,则应将HH
模式用于小时部分:
private static final DateFormat FORMATTER = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
您指定的格式与数据格式不匹配。
格式"yyyy-MM-dd hh:mm:ss"
与数据"2015-08-03 09:19:00.000"
不兼容,原因有两个:(1)AM / PM缺少日期,因为“ hh”需要1-12小时,以及日期字符串中存在的(2)毫秒
替换下面提到的行,您的问题将得到解决。
private static final SimpleDateFormat FORMATTER = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
但是,上述问题均不会导致您收到异常,因为默认情况下会忽略毫秒。
异常的可能原因是方法“ convertStringToDate”的返回类型或hh
值超出01
到12
之间的范围。
String
更改为Date
hh
更改为HH
。 这是因为您试图从您的方法中返回一个String
。 将其更改为Date
。
public static Date convertStringToDate(String date) {
if(date!=null){
return FORMATTER.parse(date);
}
return null;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.