楼主,我才做的作业,是时间相减的,你稍微改一下,思路和讲解都有,这一块应该差不多了
* 需求:
* "2014年6月7日 下午03时38分23秒", "2014年4月12日 下午11时56分59秒"
* 它们之间相隔多少天?
*
* 思路:
* 由于给的字符串,首先我们需要把字符串变成日期,再把日期变成毫秒值,
* 2个毫秒值进行相减之后,就可以得到时间差的毫秒值,然后再转天数即可。
* 如何把一个字符串变成日期对象呢?
* 这时就需要找DateFormat类,它可以把日期变成字符串,同时也可以把字符串变成日期。
*
*
*/
public class DateFormatDemo {
public static void main(String[] args) throws ParseException {
// 获取一个用于格式化日期的对象
// DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG,
DateFormat.LONG);
// 获取一个日期对象
Date d = new Date();
// 将这个日期对象格式化成字符串
String time = df.format(d);
System.out.println(d);
System.out.println(time);
String s1 = "2014/6/7 13:38:23";
String s2 = "2013-6-6 12-38-23";
method_2(s1, s2);
}
/*
* 真正在书写日期字符串形式时: 2014/04/04 23:23:23
* 当获取到的日期字符串形式不是默认的四种格式之后,就无法解析了。那么需要使用DateFormat的子类SimpleDateFormat类根据
* 我们指定的样式风格类解析。
*
* SimpleDateFormat它可以在创建对象的时候,根据我们指定的风格类解析和格式化日期 这里的风格我们可以根据自己的喜欢好指定
*
*
* "2014/6/7 13:38:23"; ----> "yyyy/MM/dd hh:mm:ss"
*/
public static void method_2(String s1, String s2) throws ParseException {
// 自己指定格式化的风格
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
Date d1 = sdf1.parse(s1);
Date d2 = sdf2.parse(s2);
// 通过日期对象获取毫秒值
long t1 = d1.getTime();
long t2 = d2.getTime();
// 计算时间差
long day = (Math.abs(t1 - t2)) / 1000 / 60 / 60 / 24;
System.out.println(day);
}
/*
* 这个方法的功能计算两个字符串表示的日期之间相差的天数 在使用DateFormat格式器进行把字符串解析成日期对象的时候,
* 要求获取到的格式器一定要和给定的字符串表示的日期风格一致,如果不一致是解析不了
*/
public static void method(String s1, String s2) throws ParseException {
// 获取用于解析日期字符串的格式器
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG,
DateFormat.LONG);
// 把字符串解析成日期对象
Date d1 = df.parse(s1);
Date d2 = df.parse(s2);
// 通过日期对象获取毫秒值
long t1 = d1.getTime();
long t2 = d2.getTime();
// 计算时间差
long day = (Math.abs(t1 - t2)) / 1000 / 60 / 60 / 24;
System.out.println(day);
}
}
|