无论系统格式如何,如何在java中将String转换为Date

时间:2015-04-16 07:13:31

标签: java string

我正在尝试将日期字符串转换为java中的日期对象,而不管当前的系统日期格式如何。因为我想让我的自定义日期格式存储在数据库中。以下是我的代码,请指教我。

public static String dateToString(String date){
    if(date.equals("")) return "";
    if(date == null || date.length() == 0){
        return "";
    }
    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
    try {
        Date l_date =  format.parse(date);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(l_date);
        String year = String.format("%04d", calendar.get(Calendar.YEAR));
        String month = String.format("%02d", calendar.get(Calendar.MONTH));
        String day = String.format("%02d", calendar.get(Calendar.DATE));
        return year + month + day;
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return "";
    }
}

对于SimpleDateFormat,它只能解析我听到的编码格式。

dateToString("16/04/2015");

它可以转换为上面的代码。但是,当我尝试使用以下格式时

dateToString("Thursday, April 16, 2015");

我去了无法解释的日期:“2015年4月16日星期四”错误。

3 个答案:

答案 0 :(得分:4)

您正试图以EEEE, MMMM dd, yyyy格式转换字符串格式为dd/MM/yyyy ...

首先使用您尝试转换的String的正确格式,使用您想要转换回来的格式...

SimpleDateFormat from = new SimpleDateFormat("EEEE, MMMM dd, yyyy");
SimpleDateFormat to = new SimpleDateFormat("dd/MM/yyyy");

String value = to.format(from.parse(dateString));

现在您可以使用类似DateUtils.parseDate(String, String[])的内容,它允许提供多种不同的格式,但仍然限于您可能知道的内容。

更好的解决方案是将Date值直接存储在数据库中。

答案 1 :(得分:0)

  • 您将错误的参数传递给SimpleDateFormater
  • 使用 SimpleDateFormat format = new SimpleDateFormat(“EEEE,MMMM dd,yyyy”)而不是SimpleDateFormat to = new SimpleDateFormat(“dd / MM / yyyy”);
  • 解决您的Unparseable日期问题。

答案 2 :(得分:0)

尝试使用以下内容:

public static String dateToString(String date){
    if(date.equals("")) return "";
    if(date == null || date.length() == 0){
        return "";
    }
    SimpleDateFormat formatIn = new SimpleDateFormat("dd/MM/yyyy");
    SimpleDateFormat formatOut = new SimpleDateFormat("yyyy-dd-MM");

    try {
        Date l_date =  formatIn.parse(date);
        String result = formatOut.format(l_date);
        return result;
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return "";
    }
}

但是如果你想将一些数据放入数据库,你也可以使用String java.sql.Date

类似的东西:

SimpleDateFormat format = new SimpleDateFormat();

Connection conn = ...
PreparedStatement ps = conn.prepareStatement("...");

long lDate = format.parse(sDate).getTime();
java.sql.Date dDate = new java.sql.Date(lDate);
ps.setDate(1, dDate);