繁体   English   中英

将字符串转换为java.util.date

[英]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值超出0112之间的范围。

  1. 将返回类型从String更改为Date
  2. 将日期格式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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM