Java日期操作类(DateFormat、SimpleDateFormat)

来源:互联网 发布:将军岂愿见之乎的乎 编辑:程序博客网 时间:2024/04/29 14:44


public abstract classDateFormat
extends Format

DateDormat

此类是一个日期的格式化类,专门的格式化日期的操作,因为java.util.Date类本身就已经包含了完整的日期,所以只有将此日期格式化显示就行了

此类是一个抽象类,按照思路,只见使用其子类实例化子类即可。到那时DateFormat类本身的内部提供了可以直接为其实例化的操作

static ()
          获取为日期和时间使用 SHORT 风格的默认日期/时间格式器。

 

static ()
          获取日期格式器,该格式器具有默认语言环境的默认格式化风格。

package com.qn.test;

import java.text.DateFormat;
import java.util.Date;


public class Test1 {
 public static void main(String[] args) {
        DateFormat df1=null;
        DateFormat df2=null;
        df1=DateFormat.getInstance();//得到日期的DataFormat对象
        df2=DateFormat.getDateInstance();//得到日期时间的的DataFormat对象
        System.out.println("Date:"+df1.format(new Date()));//按照日期格式化
        System.out.println("Date:"+df2.format(new Date()));//按照日期时间格式化后
 }
}

结果

 

通过此类可以直接将Date类的显示进行合理的格式化操作,此时采用的是默认的格式化操作,也可以通过Locale对象指定要显示的区域,如中国

package com.qn.test;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;


public class Test2 {
 public static void main(String[] args) {
        DateFormat df1=null;
        DateFormat df2=null;
        df1=DateFormat.getDateInstance(DateFormat.DATE_FIELD,new Locale("zh","CN"));//得到日期的DataFormat对象
        df2=DateFormat.getDateInstance(DateFormat.ERA_FIELD,new Locale("zh","CN"));//得到日期时间的的DataFormat对象
        System.out.println("Date:"+df1.format(new Date()));//按照日期格式化
        System.out.println("Date:"+df2.format(new Date()));//按照日期时间格式化后
 }
}

结果

这样的格式化很麻烦有一些常量

下面是SimpleDateFormat类

此类的功能是完成日期的显示格式化的,如将一种日期格式变为另一种日期格式
如原始日期 2008-10-19 10:11:30.235
转换后的日期:2008年10月19日 10点11分30秒235毫秒
这个时候就需要使用SimpleDateFormat类了,要准备一个模板,用于转换

字母 日期或时间元素 表示 示例 G Era 标志符 AD y 年 1996; 96 M 年中的月份 July; Jul; 07 w 年中的周数 27 W 月份中的周数 2 D 年中的天数 189 d 月份中的天数 10 F 月份中的星期 2 E 星期中的天数 Tuesday; Tue a Am/pm 标记 PM H 一天中的小时数(0-23) 0 k 一天中的小时数(1-24) 24 K am/pm 中的小时数(0-11) 0 h am/pm 中的小时数(1-12) 12 m 小时中的分钟数 30 s 分钟中的秒数 55 S 毫秒数 978 z 时区 Pacific Standard Time; PST; GMT-08:00 Z 时区 -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



在SimpleDateFormat类使用的时候,必须注意的是在构造对象的时候要传入匹配的模板
构造方法SimpleDateFormat(String pattern)
          用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

转换 public Date parse(String source)取得全部的时间数

格式化 public final String format(Date date)将时间从新格式化为字符串显示

事例

package com.qn.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


public class Test2 {
 public static void main(String[] args) {
  String strDate="2008-10-19 10:11:30.345";
  //定义模板从字符串中提取数字
  String path1="yyyy-MM-dd HH:mm:ss.SSS";
  //定义模板将取出来的日期转换成指定格式
  String path2="yyyy年MM月dd日  HH时mm分ss秒SS毫秒";
  SimpleDateFormat sdf1=new  SimpleDateFormat(path1);
  SimpleDateFormat sdf2=new  SimpleDateFormat(path2);
  Date d=null;
  try {
   d=sdf1.parse(strDate);//从给定的字符串中提取出来日期
  } catch (ParseException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  System.out.println(sdf2.format(d));//将日期变为新的格式
  
 }
}

结果


原创粉丝点击