无法解释的日期或错误的日期

时间:2014-02-04 23:35:50

标签: java date simpledateformat

嗨,我知道有很多帖子,但我无法弄清楚发生了什么。我从db获取一个日期作为String并尝试将其转换为另一种形式。

不明白必须首先解析字符串,然后使用另一个SimpleDateFormat来格式化该日期。我知道打印时会得到我的预期。

日期一:2014年1月16日04:00:00 EDT 2014

2014年6月16日

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;


    public class DateCheck {
        public static void main(String[] args) {
            try {
                String str = "2014-06-16 04:00:00.0";
                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                Date date1 =  df.parse(str);
                System.out.println(" Date one: " + date1);
                 SimpleDateFormat df2 = new SimpleDateFormat("MM-dd-yyyy");       

                System.out.println(df2.format(date1));
        } catch (ParseException e) {
            e.printStackTrace();
        }
      }
    }

2 things to note, if i uncomment out the setLenient method i get unparseable date exception.
If commented out i get:Mon Oct 06 00:00:00 EDT 2183
Any help?

EDIT: Sorry that was just stupid.  I know get Thu Jan 16 00:06:00 EST 2014
 which is correct but i wanted it like 01-16-14

1 个答案:

答案 0 :(得分:0)

您的格式与输入String不匹配。

输入String的格式为" yyyy-MM-dd hh:mm.s" (对格式有一个假设,因为我们没有足够的信息来做出准确的预测)

String str = "2014-06-09 00:00.0";
DateFormat df = new SimpleDateFormat("MM-dd-yy");
df.setLenient(true);
Date result = df.parse(str);

哪个输出

Mon Jun 09 00:00:00 EST 2014

因此,您的格式错误或数据库中的值错误。这取决于您的要求