今天小编遇到一个关于日期的小问题,于是就深究了一下,分享给大家
至于从数据库读出来的日期后面为什么多了个 .0,这是因为你数据库的该字段设置为 timestamp 类型了,然而如果设置为Date类型的话就不会报这种错误了,当然,你非要用 timestamp 类型的话,小编也帮你给解决了,也很简单。我把测试类给大家看一下吧,有图有真相
import java.text.SimpleDateFormat;
import java.util.Date;
import org.lee.dao.FactoryDao;
import org.lee.model.User;
public class DateFormat {
public static void main(String[] args) throws Exception {
User user = FactoryDao.getUserDAO().getUserById("user"); //从数据库获取对象
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //创建要显示的日期格式
//注意了,这里的 MM 在java中代表月份,而 mm 代表分钟, HH 代表24小时制的时间, hh 代表12小时制的时间,很严格的
Date date = fmt.parse(user.getTime()); //将从数据库读出来的 timestamp 类型的时间转换为java的Date类型
String s = fmt.format(date); //将这个时间格式化,转换为String类型
System.out.println("user.getTime() : "+user.getTime()); //打印原本从数据库读出来的 timestamp 类型日期
System.out.println("date.toLocaleString() : "+date.toLocaleString()); //打印使用Date.toLocaleString()方法得到的日期
System.out.println("fmt.format(date) : "+s); //打印格式化之后的日期,这是最理想的日期格式
/*Date To String*/
String str = fmt.format(date);
/*String To Date*/
Date d = fmt.parse(s);
}
}
运行结果:
上面的代码说的够清楚了,还不懂的话,小编只能呵呵了