常用类库-java.text.DateFormat
简介
类名:public abstract class DateFormat extends Format
可以实现日期/时间到文本的格式化,解析文本日期/时间和规范化。此类本身是一个抽象类,但是它提供一些静态工厂方法可以实现上述功能,同时它的子类 SimpleDateFormat 也可以做到时间/日期格式化解析,在实际开发中经常用到的也是这个子类。
为什么用 SimpleDateFormat 而不用 DateFormat ?
在进行格式化操作时 DateFormat 为我们提供了一些格式模板(一个模板对应一个静态常量),只需要在工厂方法中传入对应的格式参数就可以了,然而这些参数名对格式模板的描述比较笼统,参数对应的格式还需要自己去记忆,且这些格式模板固定又有限,有时并不能满足我们实际的格式要求。SimpleDateFormat 在实例化时我们可以在构造方法中传入一个字符串参数,这个参数就是我们自定义的格式模板,如此便能得到自己想要的时间日期格式。两者对比,显然 SimpleDateFormat 在开发中更加实用。
考虑到实用性,以下仅介绍 SimpleDateFormat 的使用。
类名:public class SimpleDateFormat extends DateFormat
构造方法
SimpleDateFormat
方法名:
-
public SimpleDateFormat()
-
public SimpleDateFormat(String pattern)
-
public SimpleDateFormat(String pattern, Locale locale)
作用:
获得一个 SimpleDateFormat 类对象并初始化。
构造方法1使用默认的时间日期模式和日期格式符号默认 FORMAT区域设置。
构造方法2使用给定的时间日期模式和默认的默认日期格式符号 FORMAT区域设置,该方法使用最频繁。
构造方法3使用给定的时间日期模式和给定语言环境的默认日期格式符号设置。
常用字段
y 表示年
M 表示月
d 表示日
H 表示时0-23
m 表示分
s 表示秒
S 表示毫秒
a 表示上午/下午
E 表示周几
举例:使用 ”yyyy-mm-dd HH:mm:ss:SSS“ 日期模板会将已定义的字段替换为指定时间的相对应值,其他位置的未定义的字符(如 -、/、:以及空格等)不变,例如 ”2008-08-08 12:12:12:123“。
常用方法
format
方法名:public final String format(Date date)
作用:
该方法继承自父类 DateFormat 类中,此方法使用 final 修饰,子类不可重写该方法。该方法用于把 date 对象转换为时间日期字符串并返回,转换的时间日期格式由调用该方法的对象决定。
使用案例:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
/**
*@ClassName: SimpleDateFormatTest
*@Description: SimpleDateFormat的使用
*
*/
public class SimpleDateFormatTest {
public static void main(String[] args) {
// 使用构造方法 SimpleDateFormat()创建对象,时间日期转化格式为默认的短款式
SimpleDateFormat format = new SimpleDateFormat();
String text = format.format(new Date());
System.out.println(text);
// 使用构造方法 SimpleDateFormat(String pattern)创建对象,时间日期转换格式为参数pattern表达的形式
SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd EEE HH:mm:ss");
String text2 = format2.format(new Date());
System.out.println(text2);
// 使用构造方法 SimpleDateFormat(String pattern, Locale locale)创建对象,时间日期转换格式为参数pattern表达的形式,语言环境为locale对应环境
SimpleDateFormat format3 = new SimpleDateFormat("yyyy-MMM-dd EEE HH:mm:ss", Locale.US);
String text3 = format3.format(new Date());
System.out.println(text3);
}
}
parse
方法名:public Date parse(String source) throws ParseException
作用:
将指定的字符串转换为 date 对象并返回,如果转换失败则抛出 ParseException 异常。如果该字符串的格式与调用该方法的对象对应的时间日期格式不匹配则转换失败,如时间日期的顺序不一致,时间及日期以外的链接字符不一样。
使用案例:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*@ClassName: parseTest
*@Description: parse的使用
*
*/
public class parseTest {
public static void main(String[] args) {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
SimpleDateFormat sdf3 = new SimpleDateFormat("HH:mm:ss MM-dd-yyyy");
String source = "2008-08-08 12:12:12";
// 转换的字符串与时间日期模板匹配
try {
Date date1 = sdf1.parse(source);
System.out.println(date1);
} catch (ParseException e) {
System.out.println("转换字符串与指定时间日期格式不匹配!");
}
// 转换的字符串与时间日期模板不匹配
try {
Date date2 = sdf2.parse(source);
System.out.println(date2);
} catch (ParseException e) {
System.out.println("转换字符串与指定时间日期格式不匹配!");
}
try {
Date date3 = sdf3.parse(source);
System.out.println(date3);
} catch (ParseException e) {
System.out.println("转换字符串与指定时间日期格式不匹配!");
}
}
}