在实际应用中,很多时候会用到String和Date类型之间的转换,比如:
在javaEE项目中,会接受到日期格式的String,我们如果要将其转换为Date格式,就会用到SimpleDateFormat类。
1.将String转换为Date类
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringToDate {
public static void main(String[] args) {
//获得一个时间格式的字符串
String dateStr = "2016-12-31";
//获得SimpleDateFormat类,我们转换为yyyy-MM-dd的时间格式
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
try {
//使用SimpleDateFormat的parse()方法生成Date
Date date = sf.parse(dateStr);
//打印Date
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
2.将Date转换为String类型
Object类中为我们提供了toString方法,然而该方法对Date类进行转换时,往往达不到我们想要的效果,我们试一下这样的代码。
import java.util.Date;
public class DateToString1 {
public static void main(String[] args) {
// 获得当前时间
Date date = new Date();
//打印toString()
System.out.println("当前时间:"+date.toString());
}
}
这时候打印出来的String为:当前时间:Sat Dec 31 13:59:22 CST 2016
what?!!
当然,这是一种格式的时间,但是对于客户而言,这样的时间显然是不行的,那么我们就需要将其转换为我们常用到的格式:yyyy-MM-dd
废话不多说,看代码:
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateToString1 {
public static void main(String[] args) {
// 获得当前时间
Date date = new Date();
// 获得SimpleDateFormat类
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
//打印当前时间
System.out.println("当前时间:"+sf.format(date));
}
}
这时候的打印结果为: 当前时间:2016-12-31
打印结果已经受到我们控制了,我们还可以打印出:"2016年12月31日这样的结果。
只要把"yyyy-MM-dd"修改为"yyyy年MM月dd日"即可。
SimpleDateFormat中parse和format的区别
parse()返回的是一个Date类型数据,format返回的是一个StringBuffer类型的数据
//SimpleDateFormat中的parse方法可以 //把String型的字符串转换成特定格式的date类型
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()); }
//SimpleDateFormat中的format方法可以 //把Date型的字符串转换成特定格式的String类型
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); }
EX:
public class FormatDateTime { public static void main(String[] args) { SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm"); SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString() SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E "); SimpleDateFormat myFmt4=new SimpleDateFormat( "一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区"); Date now=new Date(); System.out.println(myFmt.format(now)); System.out.println(myFmt1.format(now)); System.out.println(myFmt2.format(now)); System.out.println(myFmt3.format(now)); System.out.println(myFmt4.format(now)); System.out.println(now.toGMTString()); System.out.println(now.toLocaleString()); System.out.println(now.toString()); } } SimpleDateFormat sdf = new SimpleDateFormat();String d = sdf.format(Date date);Date d = sdf.parse(String sourse);