Date日期类
Java是面向对象的,会用一个类代表一个事物。
Date类在Java中代表的是系统当前此刻日期时间对象。Date类:
- 包:java.util.Date。
- 构造器:
– public Date():创建当前系统的此刻日期时间对象。
– public Date(long time):- 方法:
– public long getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来走过的总的毫秒数。时间记录的两种方式:
a.Date日期对象。
b.时间毫秒值:从1970-01-01 00:00:00开始走到此刻的总的毫秒值。 1s = 1000ms小结:
Date可以代表系统当前此刻日期时间对象。
时间记录的两种方式:
Date日期对象。
时间毫秒值:从1970-01-01 00:00:00开始走到此刻的总的毫秒值。 1s = 1000ms
- 直接创建日期对象,打印时间。
public class _Date {
public static void main(String[] args){
Date da = new Date();
System.out.println(da); //重写toString
}
}
- 从1970-至今走过的毫秒值
public class _Date {
public static void main(String[] args){
Date da = new Date();
System.out.println(da); //重写toString
long time = da.getTime();
System.out.println(time);
}
}
打印结果:
时间毫秒值的作用
时间毫秒值可以用于做时间的计算:例如代码的执行性能分析。
public class DateDemo02 {
public static void main(String[] args) {
// 1.拿到此刻日期时间对象的毫秒值
long startTime = new Date().getTime(); //开始时间
for(int i = 1; i < 1000000 ; i++ ){
System.out.println("输出:"+i);
}
// 2.拿到此刻日期时间对象的毫秒值
long endTime = new Date().getTime(); //结束时间
//1000.0取结果有小数
System.out.println( (endTime - startTime) / 1000.0 +"s");
}
}
有参构造器
构造器:
– public Date():创建当前系统的此刻日期时间对象。
– public Date(long time):把时间毫秒值转换成日期对象。
流程:
Date日期对象 -> getTime() -> 时间毫秒值
时间毫秒值 -> new Date(时间毫秒值) -> Date日期对象
小结:
public Date(long time):把时间毫秒值转换成日期对象。
问题:求121秒后的时间值是多少? 将时间毫秒值转换成日期对象
public class _Date01 {
public static void main(String[] args){
//问题:121秒以后的时间是多少?
//1.拿到此刻的日期对象
Date da = new Date();
System.out.println(da);
//2.拿到此时日期对象的毫秒值,往后走121秒
long time = da.getTime() + 121*1000;
//3.吧时间毫秒值转换成日期对象
Date da02 = new Date(time);
System.out.println(da02);
}
}
SimpleDateFormat格式化日期对象
引入:
我们之前得到的Date日期对象或者时间毫秒值的时间形式
开发中并不喜欢,不符合有些时间格式的需求。DateFormat作用:
1.可以把“日期对象”或者“时间毫秒值”格式化成我们喜欢的时间形式。(格式化时间)
2.可以把字符串的时间形式解析成日期对象。(解析字符串时间)DateFormat是一个抽象类,不能直接使用,要找它的子类:SimpleDateFormat
我们需要用的是简单日期格式化类:SimpleDateFormatSimpleDateFormat简单日期格式化类:
包:java.text.SimpleDateFormat
构造器:public SimpleDateFormat(String pattern):
指定时间的格式创建简单日期格式化对象。
方法:
– public String format(Date date):可以把日期对象格式化成我们喜欢的时间形式,返回的是字符串!
– public String format(Object time):可以把时间毫秒值格式化成我们喜欢的时间形式,返回的是字符串!
– public Date parse(String date) throws ParseException:把字符串的时间解析成日期对象小结:
简单日期格式化类SimpleDateFormat可以把日期对象格式化成我们喜欢的时间形式
– public String format(Date date):可以把日期对象格式化成我们喜欢的时间形式,返回的是字符串!
public class SimpleDateForma01 {
public static void main(String[] args){
//将此刻时间对象转换成看的习惯的格式
//1.得到此刻的时间
Date da = new Date();
System.out.println(da);
//2.创建简单日期格式化对象,格式化时间 参数是时间的格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a"); //固定格式
//3.调用方法格式化时间得到格式化的字符串时间形式
String rs = sdf.format(da);
System.out.println(rs);
}
}
SimpleDateFormat格式化时间毫秒值
时间毫秒值可以直接格式化!!!
public class SimpleDateFormat02 {
public static void main(String[] args){
//问:121s后的时间是多少?
//1.得到日期对象
Date da = new Date();
System.out.println();
//2.得到当前时间的毫秒值
long time = da.getTime() + 121 * 1000;
//3.格式化时间毫秒值
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
System.out.println(sdf.format(time));
}
}
解析字符串时间成日期对象
引入:
Date日期对象 -> 格式化成 -> 喜欢的字符串时间形式。
时间毫秒值 -> 格式化成 -> 喜欢的字符串时间形式。
字符串的时间形式 -> 解析成 -> Date日期对象。开发中经常会收到字符串的时间,需要转成Date日期对象。
“2018-10-11 10:10:22”SimpleDateFormat简单日期格式化类:
包:java.text.SimpleDateFormat
构造器:public SimpleDateFormat(String pattern):指定时间的格式创建简单日期格式化对象。
方法:
– public String format(Date date):可以把日期对象格式化成我们喜欢的时间形式,返回的是字符串!
– public String format(Object time):可以把时间毫秒值格式化成我们喜欢的时间形式,返回的是字符串!
– public Date parse(String date) throws ParseException:把字符串的时间解析成日期对象小结:
简单日期格式化对象不仅可以把日期对象和时间毫秒值格式化成我们喜欢的字符串时间形式
它还可以把 把字符串的时间解析成日期对象
– public Date parse(String date) throws ParseException:把字符串的时间解析成日期对象
注意:::SimpleDateFormat 参数与被解析的时间格式完全一致
public class SimpleDateFormatDemo03 {
public static void main(String[] args) throws ParseException {
// 面试题:请问 “2019-11-04 09:30:30” 往后 1天15小时,30分29s后的时间是多少?
//1.定义字符串时间
String date = "2019-11-04 09:30:30";
//2.解析成日期对象(重点)
//参数与被解析的时间格式完全一致
SimpleDateFormat spf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//3.转换成时间毫秒值进行运算
Date newDate = spf.parse(date);
//后面的值可能会越界,先加个L意思是跟着long类型走
long time = newDate.getTime() + (24L * 60 * 60 + 15 * 60 * 60 + 30 * 60 + 29) * 1000;
//将毫秒格式化成字符串
System.out.println(spf.format(time));
}
}
日历类Calendar
可以单个取!!!
Calendar代表了系统此刻日期对应的日历对象。
Calendar是一个抽象类,不能直接创建对象。
Calendar日历类创建日历对象的语法:
Calendar rightNow = Calendar.getInstance();
Calendar的方法:
1.public static Calendar getInstance(): 返回一个日历类的对象。
2.public int get(int field):取日期中的某个字段信息。
3.public void set(int field,int value):修改日历的某个字段信息。
4.public void add(int field,int amount):为某个字段增加/减少指定的值
5.public final Date getTime(): 拿到此刻日期对象。
6.public long getTimeInMillis(): 拿到此刻时间毫秒值
代码演示:
public class CalendarDemo01 {
public static void main(String[] args){
Calendar nowtime = Calendar.getInstance();
System.out.println(nowtime); //重写toString方法
//获取日历中的年
int year = nowtime.get(Calendar.YEAR);
System.out.println(year);
//一年中的第几天
int days = nowtime.get(Calendar.DAY_OF_YEAR);
System.out.println(days);
//修改年份
nowtime.set(Calendar.YEAR,2099);
System.out.println(nowtime.get(Calendar.YEAR)); //重写toString方法
//通过日历拿时间毫秒值
long time01 = nowtime.getTimeInMillis();
System.out.println(time01);
//可以让日历往后走多少天 问700天后的时间
//让日历的第多少天往后走多少天
nowtime.add(Calendar.DAY_OF_YEAR,700);
nowtime.add(Calendar.HOUR,15);
long time02 = nowtime.getTimeInMillis();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
System.out.println(sdf.format(time01)); //700天前
System.out.println(sdf.format(time02)); //700天后 转换成格式
}
}