个人简介
- 大家好,我是翰慧腾。一名正在努力学JAVA的大一小白,本文章为初学的笔记,希望各位多多指教。💙
- 欢迎点赞+收藏+留言💜
- 仰望星空的同时要脚踏实地🧡
一、Date类(我们写的是util包下)
构造方法:代码演示
package Stickto;
import java.util.Date;
public class Date_ {
public static void main(String[] args) {
Date d=new Date();//创建Date类对象,调用无参构造方法
System.out.println(d);//输出内容就是当前时间
Date d1=new Date(18992938);//调用带参构造方法,参数是一个毫秒值,返回的是对应的时间
System.out.println(d1);
}
}
输出结果:
getTime方法:用于获取当前时间的毫秒值。代码演示:
package Stickto;
import java.util.Date;
public class Date_ {
public static void main(String[] args) {
Date d=new Date();//获取当前时间
long l=d.getTime();//获取当前时间的毫秒值
System.out.println(l);//输出结果:1648260254334
}
}
after方法:用于判断是否在指定日期之后
API文档:
before方法:用于判断是否在指定日期之前。
API文档:
二、SimpleDateFormat类
概述:该类可以对Date对象或毫秒值格式化成我们喜欢的形式,也可以把字符串的时间形式解析为日期对象。
构造方法、format方法见代码演示(附format代码源码)
注意:format方法参数不仅仅可以是Date对象,也可以是一个毫秒值。对毫秒值进行格式化
API文档:
package Stickto;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormat_ {
public static void main(String[] args) {
Date d=new Date();//获取当前时间
System.out.println(d);//格式化之前的时间输出
SimpleDateFormat dd=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");//创建SimpleDateFormat对象,调用带参构造方法,参数是格式化的样式
String s=dd.format(d);
System.out.println(s);//格式化之后的时间输出
long l=d.getTime();//获取当前时间的毫秒值
String s1=dd.format(l);//format方法的参数不仅仅可以是Date型,也可以对毫秒值进行格式化
System.out.println(s1);
}
}
/**public final String format(Date date)
{
return format(date, new StringBuffer(),
DontCareFieldPosition.INSTANCE).toString();
}*/
结果为:
格式化的时间形式常用模式:
parse方法:从给定的字符串解析生成日期。代码演示(附parse源码)
package Stickto;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormat_1 {
public static void main(String[] args) throws ParseException {
String time="2022年03月26日 10时50分";//给定字符串形式的时间
SimpleDateFormat s=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分");//创建SimpleDateFormat对象,设置格式,注意该格式要和给定的字符串的时间格式一样
Date d=s.parse(time);//调用parse方法,把字符串格式时间解析为Date类的日期
System.out.println(d);
}
}
/**
public Date parse(String source) throws ParseException
{
ParsePosition pos = new ParsePosition(0);
Date result = parse(source, pos);
if (pos.index == 0)
throw new ParseException("Unparseable date: \"" + source + "\"" ,
pos.errorIndex);
return result;
}
*/
结果:
before
案例:判断小明、小刚是否秒杀时间
需求:开始秒杀时间:2022年03月26日 12时00分
结束秒杀时间:2022年03月26日 13时00分
package Stickto;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimoleDateFormat_case {
public static void main(String[] args) throws ParseException {
String begin="2022年03月26日 12时00分";
System.out.println("开始秒杀时间:"+begin);
String end="2022年03月26日 13时00分";
System.out.println("结束秒杀时间:"+end);
String xiaoming="2022年03月26日 12时30分";
String xiaogang="2022年03月26日 14时00分";
SimpleDateFormat s=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分");
Date d1=s.parse(xiaoming);
Date d2=s.parse(xiaogang);
Date begin1=s.parse(begin);
Date end1=s.parse(end);
if(d1.after(begin1)&&d1.before(end1)) {
System.out.println("小明秒杀成功了");
}else
System.out.println("小明预约失败了");
if(d2.after(begin1)&&d2.before(end1)) {
System.out.println("小刚秒杀成功了");
}else
System.out.println("小刚预约失败了");
}
}
三、Calender类
概述:Calender代表了系统此刻日期对应的日历对象,该类是一个抽象类,不能直接创建对象。
Calendar是可变日期对象,一旦修改后其对象本省表示的时间将产生变化。
1.getInstance方法:拿到系统此刻日历对象。代码演示:
API文档:
2.get方法:获取信息,见代码演示:
API文档:
add方法:为某个指定的时间增加或减少指定的值。代码演示:
API文档:
getTime方法:返回一个Date型的时间。代码演示:
API文档:
package Stickto;
import java.util.Calendar;
import java.util.Date;
public class Calendar_ {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Calendar c=Calendar.getInstance();//调用getInstance方法创建Calendar对象
int y=c.get(Calendar.DAY_OF_YEAR);//获取今天是2022年的第几天
int yy=c.get(Calendar.DATE);//获取今天是本月的第几天
c.add(Calendar.DATE,10);//往后推10天
Date d=c.getTime();//获取向后推10天后的日期
System.out.println(y);
System.out.println(yy);
System.out.println(d);
}
}
JDK8以后新增的日期API:
LocalDate类
LocalTime类
LocalDateTime类
Instant类
DateTimeFormatter类
Duration类
Period类