黑马程序员_day21_其他api (二)

2014-11-24 11:49:48 · 作者: · 浏览: 17

日期字符串转成日期对象。

为了获取其中的日期或者时间字段方便。

解析使用的是DateFormat类中的parse方法。

public static void dateFormatDemo2() throws ParseException{

//日期字符串。

String str_date = "2011/5/16";注意:该日期格式并不是默认的那四种之一LONG、SHORT、MEDIUM、FULL。若是它们的话就可用

DateFormat dateFormat = DateFormat.getDateInstance();来获取日期的格式化对象。


//定义一个日期格式化对象。要解析一个具体格式的日期字符串,必须要让该日期格式对象具备解析该格式的能力


dateFormat = new SimpleDateFormat("yyyy/MM/dd");

Date date = dateFormat.parse(str_date);

System.out.println(date);

}

七、DateFormat练习

"2012/4/12"和"2012/6/2"相差多少天?

思路:

字符串-->日期对象-->毫秒值。


String str_date1 = "2012/4/12";

String str_date2 = "2012/6/3";


//1,将日期格式的字符串转成日期对象。

//使用Dateformat对象中的parse方法。而且还将这个自定义的格式封装成DateFormat对象。

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");


//2,对日期字符串进行解析。

Date date_1 = dateFormat.parse(str_date1);

Date date_2 = dateFormat.parse(str_date2);


//3,将日期对象转成毫秒值。

long time_1 = date_1.getTime();

long time_2 = date_2.getTime();


//4,相减。

long time = Math.abs(time_1 - time_2);

System.out.println(time/1000/60/60/24);由毫秒换算成天

}

}


八、Calendar类

JDK1.1之前,Date类中的一些方法的API不易于实现国际化。从JDK1.1之后,应该使用Calendar类实现日期和时间字段之间的转换。

使用DateFormat类来格式化和解析日期字符串。Date中的相应方法已废弃。

Calendar类是一个抽象类。提供了 一个类方法getInstance()来获得此类型的一个通用对象。

public static void show(Calendar c) {


int year = c.get(Calendar.YEAR);

int month = c.get(Calendar.MONTH) + 1;用0来表示1月。

所以1月还原成数值时要加一。

int day = c.get(Calendar.DAY_OF_MONTH);

String week = getWeek(c.get(Calendar.DAY_OF_WEEK));

通过查表法定义getWeek方法

System.out.println(year + "年" + month + "月" + day + "日" + week);

}


public static String getWeek(int week) {

if (week > 7 || week < 1)

throw new NoWeekException("没有这个星期");

String[] weeks = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };美国人把星期日当作一星期的第一天。

return weeks[week];

}


Calendar c = Calendar.getInstance();

// 对这个日历对象进行指定日期的设定。

// c.set(2011, 10, 4);


// 日历可以在指定的日期上偏移。

c.add(Calendar.DAY_OF_MONTH, -1);


// 练习获取任意一年的二月份有多少天。

public static Calendar getDays(int year){


Calendar c = Calendar.getInstance();

c.set(year,2,1);实际是某年的三月初一


c.add(Calendar.DAY_OF_MONTH,-1);对天数减少一天,就变成了某年的二月的最后的那天

return c;

show(c);