Java语言学习总结 扩展篇 DateFormat类
DateFormat类
java.text .DateFormat 是 日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换:也就是可以在Date对象与String对象之间进行来回转换。
●格式化:按照指定的格式,从Date对象转换为String对象。
●解析:按照指定的格式.从String对象转换为Date对象。
包的关系为:
java.lang.Object ->java.text.Format ->java.text.DateFormat ->java.text.SimpleDateFormat
因为DateFormat是抽象类,不能直接调用,需要通过调用直接子类来调用方法,直接子类为:SimpleDateFormat
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
日期和时间模式:
| 字母 | 日期或时间元素 | 表示 | 示例 | 
|---|---|---|---|
| G | Era 标志符 | Text | AD | 
| y | 年 | Year | 1996;96 | 
| M | 年中的月份 | Month | July;Jul;07 | 
| w | 年中的周数 | Number | 27 | 
| W | 月份中的周数 | Number | 2 | 
| D | 年中的天数 | Number | 189 | 
| d | 月份中的天数 | Number | 10 | 
| F | 月份中的星期 | Number | 2 | 
| E | 星期中的天数 | Text | Tuesday;Tue | 
| a | Am/pm 标记 | Text | PM | 
| H | 一天中的小时数(0-23) | Number | 0 | 
| k | 一天中的小时数(1-24) | Number | 24 | 
| K | am/pm 中的小时数(0-11) | Number | 0 | 
| h | am/pm 中的小时数(1-12) | Number | 12 | 
| m | 小时中的分钟数 | Number | 30 | 
| s | 分钟中的秒数 | Number | 55 | 
| S | 毫秒数 | Number | 978 | 
| z | 时区 | General time zone | Pacific Standard Time;PST;GMT-08:00 | 
| Z | 时区 | RFC 822 time zone | -0800 | 
示例:
| 日期和时间模式 | 结果 | 
|---|---|
| "yyyy.MM.dd G 'at' HH:mm:ss z" | 2001.07.04 AD at 12:08:56 PDT | 
| "EEE, MMM d, ''yy" | Wed, Jul 4, '01 | 
| "h:mm a" | 12:08 PM | 
| "hh 'o''clock' a, zzzz" | 12 o'clock PM, Pacific Daylight Time | 
| "K:mm a, z" | 0:08 PM, PDT | 
| "yyyyy.MMMMM.dd GGG hh:mm aaa" | 02001.July.04 AD 12:08 PM | 
| "EEE, d MMM yyyy HH:mm:ss Z" | Wed, 4 Jul 2001 12:08:56 -0700 | 
| "yyMMddHHmmssZ" | 010704120856-0700 | 
| "yyyy-MM-dd'T'HH:mm:ss.SSSZ" | 2001-07-04T12:08:56.235-0700 | 
构造方法:
由于DateFormat为抽象类,不能直接使用.所以需要常用的子类java. text. SimpleDateFornat.这个类需要一个模式(格式)来指定格式化或解析的标准。
| 构造方法摘要 | |
|---|---|
| SimpleDateFormat()用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。 | |
| SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。 | |
| SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols)用给定的模式和日期符号构造 SimpleDateFormat。 | |
| SimpleDateFormat(String pattern, Locale locale)用给定的模式和给定语言环境的默认日期格式符号构造 SimpleDateFormat。 | |
SimpleDateFormat,参数pattern是一个字符串 代表日期时间的自定义格式。
格式化:
用SimpleDateFormat 的构造方法中传递指定格式化模式,用SimpleDateFormat中的方法format把Date日期格式化为符号模式的字符串。
示例代码:
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
  //用构造方法指定模式
  String d1 = sdf.format(date);
  //调用format方法把Date日期转化成字符串
  System.out.println(date);//传人Date日期
  System.out.println(d1);//输出
  System.out.println("================");
  SimpleDateFormat sdf2 = new SimpleDateFormat("MM月dd日yyyy年 HH时mm分ss秒");
  String d2 = sdf2.format(date);
  System.out.println(date);
  System.out.println(d2);
  System.out.println("================");
  SimpleDateFormat sdf3 = new SimpleDateFormat("HH时mm分ss秒 yyyy年MM月dd日 ");
  String d3 = sdf3.format(date);
  System.out.println(date);
  System.out.println(d3);
输出结果如下:

解析:
使用pateFormat类中的方法parse,把文本解析为日期
使用步骤:
1.创建Stmpl eDateFormat对象,构造方法中传递指定的模式
2.调用stepleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
注意:
public Date parse(String source) throws ParseException
parse方法声明了一个异常叫ParseException
如果字符串和构造方法的模式不一样.那么程序就会的出此异常
调用一个抛出了异常的方法,就必须的处理这个异常,要么throws继续抛出这个异常,要么try catch自己处理
示例代码:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateParse { public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); Date date = sdf.parse("2020年01月27日 14时56分09秒"); System.out.println(date); } }
parse()括号里输入的日期格式必须与SimpleDateFormat里指定的日期格式相同,否则报错。
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号