Java 字符串转日期或日期转字符串这种需求,相信基本上每个项目都要用到,这是非常高频的要用到的方法,日常主要使用以下几种方法解决。
1.DateFormat类
此类是一个日期的格式化类、专门格式化日期的操作、因为java.util.Date类本身就已经包含了完整的日期、所以只需要将些日期按照一些好的格式格式化一下显示就好了,DateFormat是一个 抽象类 、按照以住的思路、直接使用其子类 实例化 即可、但是DateFormat 类本身的内部提供了可以直接为其实例化的操作:
public static String ge td ateZH() {
// 声明一个DateFormat
DateFormat df1 = null;
// 得到日期的DateFormat对象
df1 = DateFormat.getDateInstance(DateFormat.YEAR_FIELD,
new Locale("zh", "CN"));
return df1.format(new Date());
}
2.借助SimpleDateFormat类:
public String dateToString(Date d) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(d); }
3.使用String.format()方法:
String.format()的用法类似于 C语言 的 printf ,C语言转JAVA的同学一定会喜欢这个方式的:
public String dateToString(Date d) { String format = "%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS"; return String.format(format, d); }
下面对格式字符串说明
“%1$tY” %表示转义,它后面的”1$tY”是格式说明,运行时被替换掉,不会作为普通的字符输出。由于一个参数可能会被格式化好多次,”1$”表示格式化第一个参数,”tY”表示年份, 那么”%1$tY”输出的值为d的年份,比如2017,同理类推:”%1$tm”输出月。
具体的格式化说明请参看java.util.Formatter类的javadoc。
4.使用Calendar自己格式化
public String dateToString(Date d) { Calendar c = Calendar. getInstance (); c.setTime(d); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH) + 1; int dayInMonth = c.get(Calendar.DAY_OF_MONTH); int hour = c.get(Calendar.HOUR_OF_DAY); int MINUTE = c.get(Calendar.MINUTE); int SECOND s = c.get(Calendar.SECOND); String ret = String.valueOf(year); ret += "-"; ret += month < 10 ? "0" + month : String.valueOf(month); ret += "-"; ret += dayInMonth < 10 ? "0" + dayInMonth : String.valueOf(dayInMonth); ret += " "; ret += hour < 10 ? "0" + hour : String.valueOf(hour); ret += ":"; ret += minute < 10 ? "0" + minute : String.valueOf(minute); ret += ":"; ret += seconds < 10 ? "0" + seconds : String.valueOf(seconds); return ret; }
以上就是常用的几种日期格式转换的方法。