java对时间日期的处理

一、与时间日期有关的类。

  java.util.Date。实现类,其对象具有时间、日期组件。

  java.util.Calendar。抽象类,其对象具有时间、日期组件。

  java.sql.Date。实现类,其对象具有日期组件。

  java.sql.Time。实现类,其对象具有时间组件。

  java.sql.Timestamp。实现类,其对象具有时间日期组件。

  java.text.DateFormat。抽象类,其对象格式化时间日期。

       java.text.SimpleDateFormat.继承DateFormat,

 

二、各个类使用介绍:

      ①java.util.Date

          创建对象:

                  

public static void main(String[] args) throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

		Date date = new Date();
		System.out.println(sdf.format(date));
		
		Date date2 = new Date(System.currentTimeMillis());
		System.out.println(sdf.format(date2));
	}


           运行结果:

输出结果时,通过SimpleDateFormat类,进行格式化输出。

      常用方法:

另外还有getTime()/setTime(long time)

 

      ②java.util.Calender

    该类的继承结构:

Calendar为抽象类,创建方式如下:

public static void main(String[] args) {
		Calendar cd = Calendar.getInstance();//构造函数式受保护的,无访问权限,通过提供的静态方法来实例化
		
		if(cd instanceof GregorianCalendar){
			System.out.println("yes");
		}
	}

输出结果:yes

疑问:getInstance()是Calendar的非抽象方法(抽象方法不能被static关键字修饰)。那么Calendar.getInstance()得到的实例是如何创建的呢?如果是Calendar来创建的那么它为何会是子类的实例 呢?

查看源码:

    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;
    }

我们可以看到Calendar有好几个子类,这里我们调用的是GregorianCalendar类的构造函数生成,所以会打印yes.【^_^,这里尽然直接在父类中创建了子类】

 Calendar与Date的相互转换:

	public static void main(String[] args) {
		Calendar cd = Calendar.getInstance();//构造函数式受保护的,无访问权限,通过提供的静态方法来实例化
		
		Date date = cd.getTime();
		Calendar cd2 = Calendar.getInstance();
		cd2.setTime(date);//Calendar中没有参数为Date的构造函数
	}
Calendar的常用常量:

public static void main(String[] args) {
		Calendar cd = Calendar.getInstance();//构造函数式受保护的,无访问权限,通过提供的静态方法来实例化
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEE");
		System.out.println(sdf.format(cd.getTime()));//2013-11-14 21:16:21 星期四
		//当前年
		System.out.println(cd.get(Calendar.YEAR));//2013
		//当前月,从零开始
		System.out.println(cd.get(Calendar.MONTH)+1);//11
		//当前月第几天,从1开始;与Calendar.Date等价
		System.out.println(cd.get(Calendar.DAY_OF_MONTH));//14
		//当前时钟24
		System.out.println(cd.get(Calendar.HOUR_OF_DAY));//21
		//当前时钟12
		System.out.println(cd.get(Calendar.HOUR));//9
		//当前分
		System.out.println(cd.get(Calendar.MINUTE));//16
		//当前秒
		System.out.println(cd.get(Calendar.SECOND));//21
		//一周的星期几(1-7)表示(星期日-星期六)
		System.out.println(cd.get(Calendar.DAY_OF_WEEK)-1);//4
		//当前月的星期数
		System.out.println(cd.get(Calendar.WEEK_OF_MONTH));//3
		//当前月的第几个星期;从1开始
		System.out.println(cd.get(Calendar.DAY_OF_WEEK_IN_MONTH));//2
		//当前年的第几天
		System.out.println(cd.get(Calendar.DAY_OF_YEAR));//318
	}


二、使用实例:

public static void main(String[] args) {
		java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis());
		System.out.println(sqlDate.toString());
		java.sql.Time sqlTime = new java.sql.Time(System.currentTimeMillis());
		System.out.println(sqlTime.toString());
		java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(System.currentTimeMillis());
		System.out.println(sqlTimestamp.toString()); 
	    java.util.Date utilDate = new java.util.Date(System.currentTimeMillis());
	    System.out.println(utilDate.toString());
	    java.util.Calendar cl = java.util.Calendar.getInstance();
        System.out.println(cl.getTime().toString()); 
	}


运行结果:

注:在进行数据库时间日期操作时,使用java.sql.Timestamp类

 

三、常见操作:

      ①将字符串转换成时间

      ②将时间转换成我们习惯的格式输出

      ③TimeStamp 与 java.util.Date转化

public static void main(String[] args) throws ParseException {
		String time = "1990-12-12 23:12:24";
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date d = df.parse(time);
		System.out.println(d);
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		System.out.println(sdf.format(d));
		
		Timestamp ts = new Timestamp(d.getTime());
		System.out.println(ts);
	}


运行结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值