1、DataFormat
DataFormat与MessageFormat一样都属于Format类的子类,此类专门用于格式化使用。
java.util.Date本身已经可以很好的制定出一个具体的日期,但是这样的日期在使用时的格式不是很理想,所以可以通过DateFormat进行制定格式的转换。在DataFormat中存在以下的格式操作:
public final String(Data data),接收Date型数据变为String型数据,取得DateFormat类的实例;
public static final DateFormat getDateInstance(),根据默认环境取得;
public static final DateFormat getTimeInstance(),取得日期时间;
public static final DateTimeInstance(int dateStyle,int timeStyle)
实例一:
package org.mole.normlaclass;
import java.text.DateFormat;
import java.util.Date;
public class DataFormatDemo01 {
public static void main(String args[]){
Date date = new Date();
DateFormat formatdate = DateFormat.getDateInstance();
DateFormat formatdatetime = DateFormat.getTimeInstance();
System.out.println(formatdate.format(date));
System.out.println(formatdatetime.format(date));
}
}
执行结果:
2016-3-1
20:22:58
实例二:
package org.mole.normlaclass;
import java.text.DateFormat;
import java.util.Date;
public class DataFormatDemo01 {
public static void main(String args[]){
Date date = new Date();
DateFormat formatdate = DateFormat.getDateInstance(DateFormat.DATE_FIELD);
DateFormat formatdatetime = DateFormat.getDateTimeInstance();
System.out.println(formatdate.format(date));
System.out.println(formatdatetime.format(date));
}
}
执行结果:
16-3-1
2016-3-1 20:26:53
实例三:
package org.mole.normlaclass;
import java.text.DateFormat;
import java.util.Date;
public class DataFormatDemo01 {
public static void main(String args[]){
Date date = new Date();
DateFormat formatdate = DateFormat.getDateInstance(DateFormat.ERA_FIELD);
DateFormat formatdatetime = DateFormat.getDateTimeInstance();
System.out.println(formatdate.format(date));
System.out.println(formatdatetime.format(date));
}
}
执行结果:
2016年3月1日 星期二
2016-3-1 20:27:44
实例四:
package org.mole.normlaclass;
import java.text.DateFormat;
import java.util.Date;
public class DataFormatDemo01 {
public static void main(String args[]){
Date date = new Date();
DateFormat formatdate = DateFormat.getDateInstance(DateFormat.FULL);
DateFormat formatdatetime = DateFormat.getDateTimeInstance();
System.out.println(formatdate.format(date));
System.out.println(formatdatetime.format(date));
}
}
执行结果:
2016年3月1日 星期二
2016-3-1 20:28:42
实例五:
package org.mole.normlaclass;
import java.text.DateFormat;
import java.util.Date;
public class DataFormatDemo01 {
public static void main(String args[]){
Date date = new Date();
DateFormat formatdate = DateFormat.getDateInstance(DateFormat.FULL);
DateFormat formatdatetime = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
System.out.println(formatdate.format(date));
System.out.println(formatdatetime.format(date));
}
}
执行结果:
2016年3月1日 星期二
2016年3月1日 星期二 下午08时30分25秒 GMT+08:00
2、SimpleDateFormat
DataFormat是一个抽象类,在实际开发中并不常用,而是使用它的子类SimpleDateFormat。
2.1格式转换
可以使用SimpleDateFormat进行日期格式的转换,例如现在有如下一个日期时间格式:原格式:2009-03-03 09:21:35.345转换后的格式:2009年03月03日 09时21分35秒345毫秒。面对这样的功能,就只能使用SimpleDateFormat类。在以上的两个日期中,所有的日期数字都是固定的,只是显示的格式不一样,如果想要进行日期格式化的转换,则首先应该将第一个日期的日期数字取出,再日期数字换上新的格式进行显示。
所以,下面就可以利用以上的格式进行转换操作,格式在SimpleDateFormat实例化的时候使用
构造方法:public SimpleDateFormat(String pattern),制定一个模板
如果想要完成转换功能,则可以使用如下的方法:
public Date parse(String source) throws ParseException
package org.mole.normlaclass;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDemo01 {
public static void main(String[] args) throws ParseException {
String str = "2009-03-03 09:21:35.345";
SimpleDateFormat sdfl = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒SSS毫秒");
Date date = sdfl.parse(str);//提取格式中的日期
String newStr = sdf2.format(date);//改变格式
System.out.print("转换之后的日期:"+newStr);
}
}
代码的执行结果为:转换之后的日期:2009年03月03日 09时21分35秒345毫秒
2.2、字符串变为日期
在实际的开发中,许多的日期都以文本的形式输入到程序中,则此时肯定要使用String进行接收,但是,如果在程序开发中要使用的肯定是Date型表示日期,所以此时必须将String变为Date。
package org.mole.normlaclass;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDemo02 {
public static void main(String[] args) throws ParseException {
String str = args[0].trim();//接受参数
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
Date date = sdf.parse(str);//提取日期格式
System.out.print(date);
}
}
2.3、使用SimpleDateFormat进行日期类的编写
在之前的程序基础上加入一个时间戳的操作,时间戳的概念如下:例如:2009-03-03 09:21:35.345时间戳:20090303092135345
package org.mole.normlaclass;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateTime {
private SimpleDateFormat sdf = null;
public String getDate(){
this.sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = this.sdf.format(new Date());
return date;
}
public String getDateTime(){
this.sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
String date = this.sdf.format(new Date());
return date;
}
public String getDateTimeStamp(){
this.sdf = new SimpleDateFormat("yyyyMMddhhmmssSSS");
String date = this.sdf.format(new Date());
return date;
}
public static void main(String args[]){
DateTime d = new DateTime();
System.out.println(d.getDate());
System.out.println(d.getDateTime());
System.out.println(d.getDateTimeStamp());
}
}
执行结果如下:
本文内容来自于魔乐科技的教学视频