嗨,我知道有很多帖子,但我无法弄清楚发生了什么。我从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
答案 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
因此,您的格式错误或数据库中的值错误。这取决于您的要求