我们将讨论下面的类: 

1、具体类(和抽象类相对)java.util.Date 

2、抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat 

3、抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar 

 

在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和分析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串。Date 中的相应方法已废弃。 

 

具体的我就不说了!您看下下面的代码,再去看看API就懂他们常用了!

 

  1. package com.hanchao.test; 
  2.  
  3. import java.text.SimpleDateFormat; 
  4. import java.util.Calendar; 
  5. import java.util.Date; 
  6. import java.util.GregorianCalendar; 
  7. import java.util.Random; 
  8.  
  9. /** 
  10.  * 来测试一下此类:GregorianCalendar 
  11.  * @author hanlw 
  12.  */ 
  13. public class Test { 
  14.  
  15.     public static void main(String[] args) { 
  16.          
  17.         /***************************************** 
  18.          * 通过GregorianCalendar可以获取年月日时分秒的各自的值 
  19.          */ 
  20.         GregorianCalendar cal = new GregorianCalendar(); 
  21.          
  22.         int curYear = cal.get(Calendar.YEAR); 
  23.         int curMonth = cal.get(Calendar.MONTH)+1
  24.         int curDate = cal.get(Calendar.DATE); 
  25.         int curHour = cal.get(Calendar.HOUR_OF_DAY); 
  26.         int curMinute = cal.get(Calendar.MINUTE); 
  27.          
  28.         System.out.println(curYear + "年\t"  
  29.                            + curMonth + "月\t"  
  30.                            + curDate +"日\t"  
  31.                            + curHour + "时\t"  
  32.                            + curMinute + "分\n"); 
  33.          
  34.         /********************************************** 
  35.          * Date的方法用的比较少了!用的比较少了! 
  36.          */ 
  37.         Date date = new Date(); 
  38.         System.out.println("系统当前的时间:"+date.getTime() + "\n"); 
  39.          
  40.         /************************************************ 
  41.          * 常用到的。 注意大小写的区别啊!! 
  42.          */ 
  43.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd" + "\n"); 
  44.         System.out.println("今天的日期为:\t"+sdf.format(date)); 
  45.  
  46.         SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM" + "\n"); 
  47.         System.out.println("输出年月:\t" +sdf2.format(date)); 
  48.          
  49.          
  50.         SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH"); 
  51.         System.out.println("某年月某日某时:\t" +sdf3.format(date) + "\n"); 
  52.          
  53.         SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
  54.         System.out.println("某年某月某日某时某分:\t" + sdf4.format(date) +"\n"); 
  55.          
  56.         SimpleDateFormat sdf5 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
  57.         System.out.println("某年某月某日某时某分某秒:\t" + sdf5.format(date)); 
  58.          
  59.         SimpleDateFormat sdf6 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:ms"); 
  60.         System.out.println("某年某月某日某时某分某秒某毫秒:\t" + sdf6.format(date)+"\n"); 
  61.          
  62.         /** 看看电子商务网站的订单的生成吧。*/ 
  63.         System.out.println("您的订单号:\t" +getNow() + "\n"); 
  64.     } 
  65.  
  66.     /** 
  67.      * 该方法常用来生成订单 
  68.      * @return 
  69.      */ 
  70.     public static String getNow() { 
  71.         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssms");//时间格式 
  72.         //是随机数的生成(保证那一秒钟订单的不重复,如果您的业务量非常大时,我们可以把下面的1000改成10000000......) 
  73.         Random random = new Random(); 
  74.         int index = random.nextInt(1000); 
  75.         return  sdf.format(new Date())+index;//返回当前时间对应的字符串+一个1000以内随机 
  76.     } 

具体的运行结果为:

java中date和GregorianCalendar,Calendar,SimpleDateFormat,_date