🍬 博主介绍
👨🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
目录
时间相关的知识点
Data时间类
练习
时间计算
需求1:打印时间原点开始一年之后的时间
需求2:定义任意两个Date对象,比较一下哪个时间在前,哪个时间在后
总结
simpleDataFormat类
simpleDataFormat类练习
练习
按照指定格式展示
秒杀活动
calendar类
获取calendar日历对象的方法
calendar常用方法
练习
总结
时间相关的知识点
Data时间类
Date 类是一个JDK写好的Javabean类,用来描述时间,精确到毫秒。
利用空参构造创建的对象,默认表示系统当前时间。
利用有参构造创建的对象,表示指定的时间。
public class Data {
private long time;
}
创建Data时间类:
import java.util.Date;
public class Data {
public static void main(String[] args) {
/*
public Date() 创建Date对象,表示当前时间
public Date(long date) 创建Date对象,表示指定时间
public void settime(long time) 设置/修改毫秒值
public long gettime() 获取时间对象的毫秒值
*/
//1、创建对象表示一个时间
Data d1 = new Data();
// System.out.println(d1);
//2、创建对象表示一个指定的时间
Date d2 = new Date(0L);
System.out.println(d2);
//3、setTime 修改时间
//1000毫秒 = 1秒
d2.setTime(1000L);
System.out.println(d2);
//3、gettime 获取当前时间的毫秒值
long time = d2.getTime();
System.out.println(time);
}
}
练习
时间计算
需求1:打印时间原点开始一年之后的时间
需求2:定义任意两个Date对象,比较一下哪个时间在前,哪个时间在后
需求1:打印时间原点开始一年之后的时间
import java.util.Date;
public class Data {
public static void main(String[] args) {
/* 需求1:打印时间原点开始一年之后的时间
需求2:定义任意两个Date对象,比较一下哪个时间在前,哪个时间在后
*/
//需求1:打印时间原点开始一年之后的时间
//1、创建一个对象,表示时间原点
Date d1 = new Date(0L);
System.out.println(d1);
//2、获取d1时间的毫秒值
long time = d1.getTime();
//3、在这个基础上我们添加一年的毫秒值
time = time + 1000L * 60 * 60 * 24 * 365;
//4、把计算之后的时间毫秒值,再设置回d1当中
d1.setTime(time);
//5、打印d1
System.out.println(d1);
}
}
需求2:定义任意两个Date对象,比较一下哪个时间在前,哪个时间在后
import java.util.Date;
import java.util.Random;
public class Data {
public static void main(String[] args) {
/* 需求1:打印时间原点开始一年之后的时间
需求2:定义任意两个Date对象,比较一下哪个时间在前,哪个时间在后
*/
//需求2:定义任意两个Date对象,比较一下哪个时间在前,哪个时间在后
Random r = new Random();
//创建两个时间对象
Date d1 = new Date(Math.abs(r.nextInt()));
Date d2 = new Date(Math.abs(r.nextInt()));
//获取两个对象的值,然后进行比较
long time1 = d1.getTime();
long time2 = d2.getTime();
//比较
if (time1 > time2) {
System.out.println("第一个时间在后面,第二个时间在前面");
}else if (time1 < time2) {
System.out.println("第一个时间在前面,第二个时间在后面");
}else {
System.out.println("两个时间相等");
}
}
private static void data() {
//需求1:打印时间原点开始一年之后的时间
//1、创建一个对象,表示时间原点
Date d1 = new Date(0L);
System.out.println(d1);
//2、获取d1时间的毫秒值
long time = d1.getTime();
//3、在这个基础上我们添加一年的毫秒值
time = time + 1000L * 60 * 60 * 24 * 365;
//4、把计算之后的时间毫秒值,再设置回d1当中
d1.setTime(time);
//5、打印d1
System.out.println(d1);
}
}
总结
1、如何创建日期对象?
Date date = new Date();
Date date =new Date(指定毫秒值);
2、如何修改时间对象中的毫秒值
setTime(毫秒值);
3、如何获取时间对象中的毫秒值
getTime();
simpleDataFormat类
作用
- 格式化:把时间变成我们喜欢的格式。 ==>2024年3月26日
- 解析:把字符串表示的时间变成Data对象。
simpleDataFormat类的构造方法:
格式化的时间形式的常用的模式对应关系如下:
simpleDataFormat类练习
package jdk7;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class SimpleDateFormatExample {
public static void main(String[] args) {
/*
public SimpleDateFormat() 默认格式
public SimpleDateFormat(String pattern) 指定格式
public final String format(Date date) 格式化(日期对象 -> 字符串)
public Date parse(String source) 解析(字符串 -> 日期对象)
*/
// 设置地区为中文
Locale locale = Locale.CHINESE;
//1.利用空参构造创建simpleDateFormat对象,默认格式
SimpleDateFormat sdf1 = new SimpleDateFormat();
Date d1 = new Date(0L);
String str1 = sdf1.format(d1);
System.out.println(str1);//1970/1/1 上午8:00
// 1、利用空参构造创建SimpleDateFormat对象,指定格式
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒", locale);
Date d2 = new Date(0L);
String str2 = sdf2.format(d2);
System.out.println(str2);
//加个星期 EEEE
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日 EEEE HH时mm分ss秒", locale);
Date d3 = new Date(0L);
String str3 = sdf3.format(d3);
System.out.println(str3);
}
}
package jdk7;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class SimpleDateFormatExample {
public static void main(String[] args) throws ParseException {
/*
public SimpleDateFormat() 默认格式
public SimpleDateFormat(String pattern) 指定格式
public final String format(Date date) 格式化(日期对象 -> 字符串)
public Date parse(String source) 解析(字符串 -> 日期对象)
*/
// 设置地区为中文
Locale locale = Locale.CHINESE;
//1、定义一个字符串表示时间
String str = "2024-3-26 11:11:11";
//利用空参构造创建simpleDateFormat对象
//细节:就是我们下面创建的对象需要与上面的格式保持一致
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-dd HH:mm:ss");
Date data = sdf.parse(str);
System.out.println(data.getTime()); //1711422671000
}
}
练习
按照指定格式展示
假设,你初恋的出生年月日为:2000-11-11
请用字符串表示这个数据,并将其转换为:2000年11月11日
package jdk7;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatExample_test {
public static void main(String[] args) throws ParseException {
/*
假设,你初恋的出生年月日为:2000-11-11
请用字符串表示这个数据,并将其转换为:2000年11月11日
创建一个Date对象表示2000年11月11日
创建一个SimpleDateFormat对象,并定义格式为年月日把时间变成:2000年11月11日
*/
//1.可以通过2000-11-11进行解析,解析成一个Date对象
String str = "2000-11-11";
//2、解析
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Date data = sdf1.parse(str);
//3、格式化
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd天");
String result = sdf2.format(data);
System.out.println(result);
}
}
秒杀活动
package jdk7;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatExample_test2 {
public static void main(String[] args) throws ParseException {
/* 需求:
秒杀活动开始时间:2023年11月11日 0:0:0(毫秒值)
秒杀活动结束时间:2023年11月11日 0:10:0(毫秒值)
小贾下单并付款的时间为:2023年11月11日 0:01:0
小皮下单并付款的时间为:2023年11月11日 0:11:0
用代码说明这两位同学有没有参加上秒杀活动?
*/
//1.定义字符串表示三个时间
String startstr = "2023年11月11日 0:0:0";
String endstr = "2023年11月11日 0:10:0";
String orderstr = "2023年11月11日 0:01:00";
//2.解析上面的三个时间,得到Date对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
Date startDate = sdf.parse(startstr);
Date endDate = sdf.parse(endstr);
Date orderDate = sdf.parse(orderstr);
//3.得到三个时间的毫秒值
long startTime = startDate.getTime();
long endTime = endDate.getTime();
long orderTime = orderDate.getTime();
//4.判断
if (orderTime >= startTime && orderTime <= endTime) {
System.out.println("参加秒杀活动成功");
} else {
System.out.println("参加秒杀活动失败");
}
}
}
calendar类
- Calendar代表了系统当前时间的日历对象,可以单独修改、获取时间中的年,月,日。
- 细节:Calendar是一个抽象类,不能直接创建对象。
获取calendar日历对象的方法
方法名: public static calendar getInstance()
说明:获取当前时间的日历对象
calendar常用方法
练习
package jdk7;
import java.util.Calendar;
import java.util.Date;
public class calendar {
public static void main(String[] args) {
/*
public static Calendar lgetInstance() 获取当前时间的日历对象
public final Date getTime() 获取日期对象
public final setTime(Date date) 给日历设置日期对象
public long getTimeInMillis() 拿到时间毫秒值
public void setTimeInMillis(long millis) 给日历设置时间毫秒值
public int get(int field) 获取日期中的某个字段信息
public void set(int field,int value) 修改日历的某个字段信息
public void add(int field,int amount) 为某个字段增加/减少指定的值
*/
//1.获取日历对象
//细节1:Calendar是一个抽象类,不能直接new,而是通过一个静态方法获取到子类对象
//底层原理:
//会根据系统的不同时区来获取不同的日历对象,默认表示当前时间。
//把会把时间中的纪元,年,月,日,时,分,秒,星期,等等的都放到一个数组当中
//日 :纪元
// 1 :年
// 2 :月
// 3 : 一年中的第几周
// 4:一个月中的第几周
// 5: 一个月中的第几天(日期)
// ....
//细节2:
//月份:范围0~11 如果获取出来的是.那么实际上是1月。
//星期:在老外的眼里,星期日是一周中的第一天
// 1(星期日) 2(星期一) 3(星期二) 4(星期三) 5(星期四) 6(星期五) 7(星期六)
//1、获取日历对象
Calendar c = Calendar.getInstance();
//2、修改下日历代表的时间
Date d = new Date(0L);
c.setTime(d);
System.out.println(c);
/*public int get(int field) 获取日期中的某个字段信息
public void set(int field,int value) 修改日历的某个字段信息
public void add(int field,int amount) 为某个字段增加/减少指定的值*/
//修改年、月
c.set(Calendar.YEAR,2000);
c.set(Calendar.MONTH,11); //默认+1
//增加一个月
c.add(Calendar.MONTH,1);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int data = c.get(Calendar.DAY_OF_MONTH);
int week = c.get(Calendar.DAY_OF_WEEK);
System.out.println(year + "," + month + "," + data + "," + getWeek(week)); //2001,1,1,星期一
}
//查表法://表:容器
//让数据跟索引产生对应的关系
//传入对应的数字: 1 ~7//返回对应的星期
public static String getWeek(int index) {
//定义一个数组,让汉字星期几 跟1~7产生对应关系
String[] arr = {"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
//根据索引返回对应的星期
return arr[index];
}
}
总结
-
1、Calendar表示什么?
表示一个时间的日历对象
-
2、如何获取对象
通过getlnstance方法获取对象
-
3、常见方法
set xxx:修改
get xxx:获取
add:在原有的基础上进行增加或者减少
-
4、细节点:
日历类中月份的范围:0-11
日历类中星期的特点:星期日是一周中的第一天