java中的Date、Calendar的区别和联系

在学习java时,总会对日期的用法感到迷惑、但日期又是个大商业公司必须的,所以就认真的学习了一下java中的有关时间和日历的类。

1、Date(import java.util.Date)

截止到jdk1.7该类中已经有很多方法遭到弃用,剩余的方法不多。

Date date = new Date();
System.out.println(date.toString()); //Thu Jun 19 15:16:05 CST 2014
long s = System.currentTimeMillis();
System.out.println(s); //1403162165781
System.out.println(date.getTime()); //1403162165781

s += 10000;
Date NewDate = new Date(s);
date.setTime(s);
System.out.println(date.toString());//Thu Jun 19 15:16:15 CST 2014
System.out.println(NewDate.toString());//Thu Jun 19 15:16:15 CST 2014

从上述代码可以看出,Date类的构造方法有两种,无参构造和利用毫秒数构造。并且Date是可变类,可以利用setTime()方法,重新设置时间。

但从上述的Date的输出看到,一般输出的格式相对于国人来说是晦涩难懂的,所以sun公司提供了一种格式化类来定义自己想要的格式。

DateFomat 这是一个抽象类,我们一般用的都是其子类SimpleDateFomat

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String str = sdf.format(date);
System.out.println(str);//2014-06-19 15:30:13

2、Calendar(import java.util.Calendar)

Calendar是一个抽象类,不能实例化,但其提供了了一个工厂方法

Calendar rightNow = Calendar.getInstance();

/**
* 根据当前系统地区创建Calendar实例
* 默认创建出来的Calendar描述的是当前系统时间
* java.util.Calendar
*/
Calendar calendar = Calendar.getInstance();

// System.out.println(calendar);
/**
* Date getTime()
* 以Date形式描述当前Calendar所描述的时间
*/
Date date = calendar.getTime();
/**
* void setTime(Date date)
* 让当前Calendar描述给定的Date对象所描述的时间
*/
calendar.setTime(new Date());

System.out.println(date);


可以调用Calendar的getTime方法获取Date类的时间。

//获取当前的系统时间
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());//Thu Jun 19 16:28:54 CST 2014
//将当前的年份设置为2000年
//在Calendar中由常量YEAR代表年
calendar.set(Calendar.YEAR,2000);
System.out.println(calendar.getTime());//Mon Jun 19 16:28:54 CST 2000
//在Calendar中常量MONTH代表月,将月设置为5月
//0代表1月,在Calendar中由代表月份的常量
calendar.set(Calendar.MONTH, 4);
//calendar.set(Calendar.MONTH, Calendar.MAY);
System.out.println(calendar.getTime());//Fri May 19 16:28:54 CST 2000
/**
* 在Calendar中:
* DATE代表当月的一天
* DAY_OF_MONTH 也代表当月的天,与DATE完全一样
* DAY_OF_WEEK代表星期中的一天
* DAY_OF_YEAR代表一年中的第几天
* 将日期设置为当月的第五天
*/
calendar.set(Calendar.DATE,5);
System.out.println(calendar.getTime());//Fri May 05 16:28:54 CST 2000

//获取现在的时间
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);

System.out.println("现在是:" +year+ "年" +month+ "月" +day+ "日");//现在是:2000年5月5日
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println("星期 " + (dayOfWeek == 1? "日" : dayOfWeek));//星期 6


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值