日期类-Java

Java提供了3个日期类:

  • Date:创建如期对象并获得日期(以毫秒数来表示特定的日期)
  • DateFormat:对日期进行格式化
  • Calendar:可获取和设置日期中的年、月、日、时、分和秒等信息
    一、Date类
    Date:包装一个long类型数据,表示从GMT(格林尼治标准时间,即1970年1月1日 00:00:00)这一刻开始的毫秒数,是以毫秒数来表示特定的日期。
Date date=new Date();
System.out.println(date);       //当前日期
System.out.println(date.getTime()); //GMT至今的毫秒数

程序运行结果:
Fri Jun 05 10:09:15 CST 2015
1433470155838

二、DateFormat类
DateFormat:是一个抽象类。它有一个子类SimpleDateFormat,能都对日期/时间进行格式化(日期转化为文本)、分析(文本转化为日期)和标准化。DateFormat类主要有以下2个方法:
1.public final String format(Date date):将一个Date格式化为日期/时间字符串。

Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd-EEEE hh:mm:ss");
System.out.println(sdf.format(date));
sdf=new SimpleDateFormat("yyyy/MM/dd  hh:mm");
System.out.println(sdf.format(date));

程序运行结果:
2015-06-05-星期五 10:16:38
2015/06/05 10:16

这里的的字符串”yyyy-MM-dd-EEEE hh:mm:ss”和”yyyy/MM/dd hh:mm”决定了日期的格式。常见的格式(注意区分大小写):
y或yy:表示2位长度的年;yyyy表示4为长度的年。
M或MM:表示2位长度的月,如果用汉子表示,要用MMM或MMMM。
d或dd:表示2为长度的日。
h或hh:表示2位长度的时。
m或mm:表示2位长度的分。
s或ss:表示2位长度的秒。
E:用字符串表示星期。
2.public static final DateFormat getDateTimeInstance(int dateStyle,int dateStyle):获得日期、时间格式化器,该格式化器具有给定日期和时间格式化风格。
日期和时间格式有:

  • DateFormat.SHORT:完全为数字,如15-6-5 上午10:30
  • DateFormat.MEDIU:较长,如2015-6-5 10:30:46
  • DateFormat.LONG:更长,如2015年6月5日 上午10时30分46秒
  • DateFormat.FULL:是完全指定,如2015年6月5日 星期五 上午10时30分46秒 CST
Date date=new Date();
DateFormat shortDate=DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT);
DateFormat mediumDate=DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);
DateFormat longDate=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
DateFormat fullDate=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
System.out.println(shortDate.format(date));
System.out.println(mediumDate.format(date));
System.out.println(longDate.format(date));
System.out.println(fullDate.format(date));

程序运行结果:
15-6-5 上午10:30
2015-6-5 10:30:46
2015年6月5日 上午10时30分46秒
2015年6月5日 星期五 上午10时30分46秒 CST

三、Calendar类
Calendar是一个抽象类,它是将Date对象的数据转化成YEAR、MONTH、DAY_OF_MONTH、HOUR、DATE_OF、_WEEK等常量,Calendar类有静态方法getInstance,用来获得一个Calendar对象,其日历字段已由当前的日期和时间初始化,再调用get方法和常量获得日期或时间的部分值。如:

Calendar calendar=Calendar.getInstance();
int year=calendar.get(Calendar.YEAR);   //获得当前年份
int month=calendar.get(Calendar.MONTH); //获得当前月份
int day=calendar.get(Calendar.DAY_OF_MONTH);//获得当前该月中的天
int minute=calendar.get(Calendar.MINUTE);//获得当前分钟数

Date date=calendar.getTime();       //Calendar转化为Date
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.format(date));

Calendar now=Calendar.getInstance();
now.setTime(date);        //Date转化为Calendar
System.out.println(now.getTime());

程序执行结果:
2015-06-05
Fri Jun 05 12:16:17 CST 2015

Calendar中set、add方法:
1.set(int field,int value):用来设置指定日历字段的值
2.add(int field,int value):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
例如:

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar=Calendar.getInstance();
calendar.set(Calendar.YEAR,2010);    //设置为2010年
calendar.set(Calendar.MONTH, 7);    //设置为8月,一月是从0开始
calendar.set(Calendar.DAY_OF_MONTH,3);//月中的日期设置为3
calendar.add(Calendar.DATE, -4);    //从当前日历中减去4天

System.out.println(calendar.getTime());//输出的是set指定的日期和时间,没有设置的为默认系统时间

Date date=calendar.getTime();//Calendar转化为Date
System.out.println(sdf.format(date));

calendar.add(Calendar.DATE, 4);//从日历中加上4天
date=calendar.getTime();//Calendar转化为Date
System.out.println(sdf.format(date));

calendar.add(Calendar.WEEK_OF_MONTH, -1);//把日历调整为前一周的日期
date=calendar.getTime();//Calendar转化为Date
System.out.println(sdf.format(date));

程序执行结果为:
Fri Jul 30 12:21:50 CST 2010
2010-07-30
2010-08-03
2010-07-27

计算从2010年8月2号至2012年9月4号相隔的天数

Calendar calendar=Calendar.getInstance();
calendar.set(2010,8,3);
long second1=calendar.getTimeInMillis();//获得2010年8月3日至今的毫秒数

calendar.set(2012, 9,4);
long second2=calendar.getTimeInMillis();//获得2012年9月4日至今的毫秒数

long day=(second2-second1)/(1000*24*60*60);//1000*24*60*60为一天的毫秒数
System.out.println(day);

程序执行结果为:
762

猜你喜欢

转载自blog.csdn.net/Scryhuaihuai/article/details/46375289