目录
三、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天了!好开心!*/
}
}