深入浅出精华版-刘意老师——第14讲学习笔记 之 Date_DateFormat

目录

一、原总结

二、Date的两个重要构造方法和其他重要方法

三、DateFormat及其子类SimpleDateFormat

四、使用的实例


一、原总结

7:Date/DateFormat(掌握)
    (1)Date是日期类,可以精确到毫秒。
        A:构造方法
            Date()
            Date(long time)
        B:成员方法
            getTime()
            setTime(long time)
        C:日期和毫秒值的相互转换
        案例:你来到这个世界多少天了?
    (2)DateFormat针对日期进行格式化和针对字符串进行解析的类,但是,是抽象类,所以使用其子类SimpleDateFormat
        A:SimpleDateFormat(String pattern) 给定模式
            yyyy-MM-dd HH:mm:ss
        B:日期和字符串的转换
            a:Date -- String
                format()
            b:String -- Date
                parse()
        C:案例:
            制作了一个针对日期操作的工具类。

二、Date的两个重要构造方法和其他重要方法

1.          

2.         

3.         

4.         

三、DateFormat及其子类SimpleDateFormat

   SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。 它允许格式化(日期文本),解析(文本日期)和归一化。

      1)SimpleDateFormat的构造方法

           默认模式

           

           给定模式

           

四、使用的实例

import java.util.Date;

/**
 * Date的构造方法
 * 1.Date();
 * 2.Date(long date) 
 * 分配一个 Date对象,并将其初始化为表示自称为“时代”的标准基准时间以后的指定毫秒数,即1970年1月1日00:00:00 GMT。 
 * */
public class DateDemo {
	public static void main(String[] args) {
		Date date = new Date();
		System.out.println(date);//Tue Sep 04 20:12:32 CST 2018
		long time = 1000*60*60;
		Date date2 = new Date(time);
		System.out.println(date2);//Thu Jan 01 09:00:00 CST 1970
	}
}
import java.util.Date;

/**
 * long getTime() 
 * 返回自1970年1月1日以来,由此 Date对象表示的00:00:00 GMT的毫秒 数 。  
 * 
 * void setTime(long time) 
 * 设置此 Date对象以表示1970年1月1日00:00:00 GMT后的 time毫秒的时间点。  
*/
public class DateDemo {
	public static void main(String[] args) {
		Date date = new Date();
		long time = date.getTime();
		
		System.out.println("time:"+time);//time:1536108895770
		System.out.println(System.currentTimeMillis());//1536108895770
		
		System.out.println("date:"+date);//date:Wed Sep 05 08:56:38 CST 2018
		date.setTime(1000);
		System.out.println("date:"+date);//date:Thu Jan 01 08:00:01 CST 1970
		
		date.setTime(time);
		System.out.println("date:"+date);//date:Wed Sep 05 08:57:33 CST 2018
	}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
 * StringBuffer   format(Date date, StringBuffer toAppendTo, FieldPosition pos) 
 * 将给定的 Date成日期/时间字符串,并将结果追加到给定的 StringBuffer 。  
 * 
 * Date parse(String text, ParsePosition pos) 
 * 从字符串中解析文本以产生一个 Date 。  
 * 
 * 默认模式
 * SimpleDateFormat() 
 * 构造一个 SimpleDateFormat使用默认模式和日期格式符号为默认的 FORMAT区域设置。
 * 
 * 给定模式
 * SimpleDateFormat(String pattern)
 * 使用给定模式 SimpleDateFormat并使用默认的 FORMAT语言环境的默认日期格式符号。 
 */
public class DateFormatDemo {
	public static void main(String[] args) throws ParseException {
		//A: Date----------to------------String
		//1.创建日期对象
		Date date = new Date();
		//2.创建格式化对象(默认模式)
		SimpleDateFormat sdf1=new SimpleDateFormat();
		String s1 = sdf1.format(date);
		System.out.println(s1);//18-9-5 上午9:15
		//3.创建格式化对象(给定模式)
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String s2 = sdf2.format(date);
		System.out.println(s2);//2018-09-05 09:18:24
		
		//B: String--------------to------------Date
		//1.给定字符串
		String str=new String("2018-09-05 09:18:24");
		Date date2 = sdf2.parse(str);
		System.out.println("date2:"+date2);//date2:Wed Sep 05 09:18:24 CST 2018
		
		//2.在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配(假如不匹配)
		SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
		Date date3 = sdf3.parse(str);
		System.out.println("date3:"+date3);
		//Exception in thread "main" java.text.ParseException: Unparseable date: "2018-09-05 09:18:24"
		
		//3.假如用默认模式sdf来解析
		Date date4 = sdf1.parse(str);//Exception in thread "main" java.text.ParseException: Unparseable date: "2018-09-05 09:18:24"
		System.out.println("date4:"+date4);
		
	}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
	//Date转String
	public static String DateToString(Date d, String format) {
		return new SimpleDateFormat(format).format(d);
	}
	//String转
	public static Date StringToDate(String s, String format) throws ParseException {
		return new SimpleDateFormat(format).parse(s);
	}
}




import java.text.ParseException;
import java.util.Date;

public class DateUtilDemo {
	public static void main(String[] args) throws ParseException {
		Date d=new Date();
		String s1 = DateUtil.DateToString(d, "yyyy-MM-dd");
		System.out.println("s1:"+s1);//s1:2018-09-05
		
		String s2=DateUtil.DateToString(d, "yyyy年MM月dd日  HH时mm分ss秒");
		System.out.println("s2:"+s2);//s2:2018年09月05日  10时51分30秒
		
		String str=new String("2018-09-05");
		Date date = DateUtil.StringToDate(str, "yyyy-MM-dd");
		System.out.println("date:"+date);//date:Wed Sep 05 00:00:00 CST 2018
	}
}
import java.text.ParseException;
import java.util.Date;
import java.util.Scanner;

import com.briup_04.DateUtil;

public class MyYearOldDemo {
	/*
	 * 算一下你来到这个世界多少天?
	 * 
	 * 分析:
	 * 		A:键盘录入你的出生的年月日
	 * 		B:把该字符串转换为一个日期
	 * 		C:通过该日期得到一个毫秒值
	 * 		D:获取当前时间的毫秒值
	 * 		E:用D-C得到一个毫秒值
	 * 		F:把E的毫秒值转换为年
	 * 			/1000/60/60/24
	 */
	public static void main(String[] args) throws ParseException {
		//A:键盘录入你的出生的年月日
		System.out.println("请输入你的生日,按照‘yyyy-MM-dd’格式输入:");
		Scanner sc=new Scanner(System.in);
		String birthStr = sc.nextLine();
		//B:把该字符串转换为一个日期
		Date birthDate = DateUtil.StringToDate(birthStr, "yyyy-MM-dd");
		//C:通过该日期得到一个毫秒值
		long time1 = birthDate.getTime();
		//D:获取当前时间的毫秒值
		long time2 = System.currentTimeMillis();
		//E:用D-C得到一个毫秒值
		long cha=time2-time1;
		//F:把E的毫秒值转换为天
		long day=cha/1000/60/60/24;
		
		System.out.println("我来到世界上已经"+day+"天了!好开心!");
		/*请输入你的生日,按照‘yyyy-MM-dd’格式输入:
		1996-10-01
		我来到世界上已经8009天了!好开心!*/

	}
}

猜你喜欢

转载自blog.csdn.net/elice_/article/details/82389056
今日推荐