Java中日期的格式化

时间:2021-11-05 18:07:19

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类。在以上的两个日期中,所有的日期数字都是固定的,只是显示的格式不一样,如果想要进行日期格式化的转换,则首先应该将第一个日期的日期数字取出,再日期数字换上新的格式进行显示。

Java中日期的格式化

Java中日期的格式化

所以,下面就可以利用以上的格式进行转换操作,格式在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);
}
}

Java中日期的格式化

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());
}
}

执行结果如下:

Java中日期的格式化
本文内容来自于魔乐科技的教学视频