日期转换用到了SimpleDateFormat类,其中有两个方法format()和parse(),下面讲一下用法及可能出现的问题。
parse方法:将字符串类型(java.lang.String)解析为日期类型(java.util.Date)
format方法:将日期类型(Date)数据格式化为字符串(String)
1.先说parse(),parse()是将字符串类型的解析为日期类型的
public static void main(String[] args) {
String str = "2013-01-21 15:10:20";
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
try {
date = sdf.parse(str);
} catch (ParseException e) {
System.out.println(e.getMessage());
}
System.out.println(date);
System.out.println(date.getTime());
}
2.format(),这个方法是将日期类型的数据格式化为字符串
public static void main(String[] args){
SimpleDateFormat dateformat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
String a=dateformat.format(new Date());
System.out.println("时间:"+a);
}
3.SimpleDateFormat是线程不安全的,为了安全,可以对操作进行加锁。
public static void main(String[] args) throws Exception {
String str = "2013-01-21 15:10:20";
System.out.println(parseString(str));
}
public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
private static final Object LOCK = new Object();
public static Date parseString(String datetime) throws Exception {
synchronized (LOCK) {
return format.parse(datetime);
}
}
4.有的时候会报这种错误Exception in thread "main" java.text.ParseException: Unparseable date: "2013-01-21 15:10:20"
at java.text.DateFormat.parse(DateFormat.java:357)
at com.date.DateTest.parseString(DateTest.java:20)
at com.date.DateTest.main(DateTest.java:12)
这里要注意一下,使用parse方法将String转为Date时,SimpleDateFormat定义的格式与参数String的格式必须完全一致,不然就会出现Unparseable date。