java学习之路---java类库-----Date类

本文详细介绍了Java中处理日期和时间的基本类Date、高级类Calendar以及格式化类DateFormat和SimpleDateFormat的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 :Date 类

       看源码:
         public Date () {
        this(System.currentTimeMillis());
                             }

       输出当前时间
          代码:
     public class DateDemo1 {
               public static void main(String[] args) {
                   System. out.println("当前时间" +new Date());
              }
}

结果:
     当前时间Thu Nov 21 19:04:02 CST 2013


二: Calendar类
     看源码:

               public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar> {
}

               看见Calendar是一个抽象类,那么抽象类就必须要子类来继承实现

     我们看源码的时候,看见Calendar有许多常量

          下面就是一些常量的解释:

          


除了看见常量,还有一些方法

                    

下面我们就来实现一些方法:


          1.    在源码中有这样一段代码:


                     public static Calendar getInstance()
                        {
             Calendar cal = createCalendar(TimeZone.getDefaultRef(),    
                              Locale.getDefault(Locale.Category.FORMAT));
        cal. sharedZone = true ;
        return cal;
              }

我们在看看 createCalendar这个是个什么?
           private static Calendar createCalendar(TimeZone zone,
                                           Locale aLocale)
    {
        Calendar cal = null;

        String caltype = aLocale.getUnicodeLocaleType("ca" );
        if (caltype == null) {
            // Calendar type is not specified.
            // If the specified locale is a Thai locale,
            // returns a BuddhistCalendar instance.
            if ("th" .equals(aLocale.getLanguage())
                    && ("TH".equals(aLocale.getCountry()))) {
                cal = new BuddhistCalendar(zone, aLocale);
            } else {
                cal = new GregorianCalendar(zone, aLocale);
            }
        } else if (caltype.equals("japanese")) {
            cal = new JapaneseImperialCalendar(zone, aLocale);
        } else if (caltype.equals("buddhist")) {
            cal = new BuddhistCalendar(zone, aLocale);
        } else {
            // Unsupported calendar type.
            // Use Gregorian calendar as a fallback.
            cal = new GregorianCalendar(zone, aLocale);
        }

        return cal;
    }

我看到这个方法就是来用子类实例化父类的

          2.     方法代码如下:

public class DateDemo1 {
               public static void main(String[] args) {
                   System. out.println("当前时间" +new Date());
                   Calendar calendar=Calendar.getInstance();
                   System. out.println(calendar.getTime());
              }
}

结果:
当前时间Thu Nov 21 19:14:49 CST 2013
Thu Nov 21 19:14:50 CST 2013


意思就是Calendar类的getTime就是取得当前的时间

          
3.取得当前的系统时间

          public class DateDemo2 {
     public static void main(String[] args) {
          Calendar calendar= null;//声明对象
          
              calendar= new GregorianCalendar();//子类为其实例化
              
               System. out.println(calendar.get(Calendar.YEAR)+"年"+
              
              calendar.get(Calendar. MONTH)+"月" +calendar.get(Calendar.DAY_OF_MONTH)+ "日"+
              calendar.get(Calendar. HOUR_OF_DAY)+"时" +calendar.get(Calendar.MINUTE)+ "分"+
              calendar.get(Calendar. SECOND)+"秒" +calendar.get(Calendar.MILLISECOND)+ "毫秒");
}
     
     
}

结果:
2013年10月21日19时24分18秒482毫秒

看到代码是不是很长,Date类还有其他类来格式化它

三.DateFormat类

     此类的作用就是用来格式化时间的

看源码:
public abstract class DateFormat extends Format {
  public final static DateFormat getInstance () {
        return getDateTimeInstance( SHORT, SHORT );
    }

          下面是它的常用方法

          


实现代码:

          public class DateDemo3 {
           public static void main(String[] args) {
              DateFormat dateFormat= null;
              DateFormat dateFormat2= null;
               dateFormat=DateFormat. getDateInstance();//获取时间对象
              System. out.println("日期" +dateFormat);
               dateFormat2=DateFormat. getDateTimeInstance();//获取日期时间对象
              
              System. out.println("日期-时间" +dateFormat2);
              
              System. out.println("格式化日期" +dateFormat.format(new Date()));
              System. out.println("格式化日期时间" +dateFormat2.format(new Date()));
          }
}

结果:
     日期java.text.SimpleDateFormat@ef7951d7
日期-时间java.text.SimpleDateFormat@d9235b7f
格式化日期2013-11-21
格式化日期时间2013-11-21 19:38:52

如果你还觉得不是中文的,下面的代码能满足你:

               public class DateDemo4 {
           public static void main(String[] args) {
              DateFormat dateFormat= null;
              
              DateFormat dateFormat2= null;
               //取得日期,并设置格式
               dateFormat=DateFormat. getDateInstance(DateFormat.YEAR_FIELD, new Locale("zh" ,"CN" ));
               //取得日期时间,并设置格式
               dateFormat2=DateFormat. getDateTimeInstance(DateFormat.YEAR_FIELD,DateFormat. ERA_FIELD,new Locale("zh" ,"CN" ));
              
              System. out.println("格式化的日期" +dateFormat.format(new Date()));
              System. out.println("格式化的日期时间" +dateFormat2.format(new Date()));
          }

}

结果:
格式化的日期2013年11月21日
格式化的日期时间2013年11月21日 下午07时44分40秒 CST

如果你还不满意,那就只有用DateFormat的子类SimpleDateFormat

四.SimpleDateFormat类

          


例子:
public class DateDemo5 {
           public static void main(String[] args) {
              String str= "2013-11-21 19:51:30.345" ;//定义日期字符串
               //定义时间日期模板1
              String pat1= "yyyy-MM-dd HH:mm:ss.SSS" ;
              
              String pat2= "yyyy年MM月dd日HH时mm分ss秒SSS毫秒" ;
              SimpleDateFormat simpleDateFormat= new SimpleDateFormat(pat1);//实例化模板
              SimpleDateFormat simpleDateFormat2= new SimpleDateFormat(pat2);
              Date d= null ;
                    try {
                        d=     simpleDateFormat.parse(str); //将字符串给的时间提取出来
                   } catch (ParseException e) {
                         // TODO Auto-generated catch block
                        e.printStackTrace();
                   }
                   System. out .println(simpleDateFormat2.format(d));//将日期变为新格式
              
          }

}
结果:
2013年11月21日19时51分30秒345毫秒

补充:SimpleDateFormat类常常用来提取String类的时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值