Java中日期的处理: Date和 DateFormat

Date:

表示特定的瞬间,精确到毫秒。

   

构造方法:

Date():根据当前的默认毫秒值创建日期对象

Date(long date):根据给定的毫秒值创建日期对象

demo:

public class DateDemo {

public static void main(String[] args) {

// 创建对象

Date d = new Date();

System.out.println("d:" + d);

   

// 创建对象

// long time = System.currentTimeMillis();

long time = 1000 * 60 * 60; // 1小时

Date d2 = new Date(time);

System.out.println("d2:" + d2);

}

}

   

public long getTime():获取时间,以毫秒为单位

public void setTime(long time):设置时间

   

Date得到一个毫秒值

getTime()

把一个毫秒值转换为Date

构造方法

setTime(long time)

demo:

public class DateDemo {

public static void main(String[] args) {

// 创建对象

Date d = new Date();

   

// 获取时间

long time = d.getTime();

System.out.println(time);

// System.out.println(System.currentTimeMillis());

   

System.out.println("d:" + d);

// 设置时间

d.setTime(1000);

System.out.println("d:" + d);

}

}

Date         --         String(格式化)

public final String format(Date date)

   

String -- Date(解析)

public Date parse(String source)

   

DateForamt:可以进行日期和字符串的格式化和解析,但是由于是抽象类,所以使用具体子类SimpleDateFormat

   

SimpleDateFormat的构造方法:

SimpleDateFormat():默认模式

SimpleDateFormat(String pattern):给定的模式

这个模式字符串该如何写呢?

通过查看API,我们就找到了对应的模式

y

M        

d

H

m

s

   

20141212 12:12:12

demo:

public class DateFormatDemo {

public static void main(String[] args) throws ParseException {

// Date -- String

// 创建日期对象

Date d = new Date();

// 创建格式化对象

// SimpleDateFormat sdf = new SimpleDateFormat();

// 给定模式

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");

// public final String format(Date date)

String s = sdf.format(d);

System.out.println(s);

   

   

//String -- Date

String str = "2008-08-08 12:12:12";

//在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配

SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date dd = sdf2.parse(str);

System.out.println(dd);

}

}

时间的工具类:

Demo:

package cn.itcast_04;

   

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

   

/**

* 这是日期和字符串相互转换的工具类

*

*/

public class DateUtil {

private DateUtil() {

}

   

/**

* 这个方法的作用就是把日期转成一个字符串

*

* @param d

* 被转换的日期对象

* @param format

* 传递过来的要被转换的格式

* @return 格式化后的字符串

*/

public static String dateToString(Date d, String format) {

// SimpleDateFormat sdf = new SimpleDateFormat(format);

// return sdf.format(d);

return new SimpleDateFormat(format).format(d);

}

   

/**

* 这个方法的作用就是把一个字符串解析成一个日期对象

*

* @param s

* 被解析的字符串

* @param format

* 传递过来的要被转换的格式

* @return 解析后的日期对象

* @throws ParseException

*/

public static Date stringToDate(String s, String format)

throws ParseException {

return new SimpleDateFormat(format).parse(s);

}

}

Demo:

算一下你来到这个世界多少天?

   

分析:

                A:键盘录入你的出生的年月日

                B:把该字符串转换为一个日期

                C:通过该日期得到一个毫秒值

                D:获取当前时间的毫秒值

                E:D-C得到一个毫秒值

                F:E的毫秒值转换为年

                        /1000/60/60/24

  

public class MyYearOldDemo {

public static void main(String[] args) throws ParseException {

// 键盘录入你的出生的年月日

Scanner sc = new Scanner(System.in);

System.out.println("请输入你的出生年月日:");

String line = sc.nextLine();

   

// 把该字符串转换为一个日期

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Date d = sdf.parse(line);

   

// 通过该日期得到一个毫秒值

long myTime = d.getTime();

   

// 获取当前时间的毫秒值

long nowTime = System.currentTimeMillis();

   

// D-C得到一个毫秒值

long time = nowTime - myTime;

   

// E的毫秒值转换为年

long day = time / 1000 / 60 / 60 / 24;

   

System.out.println("你来到这个世界:" + day + "");

}

}

 

posted @ 2017-07-10 09:25  殷瑜泰  阅读(252)  评论(0编辑  收藏  举报