新手小白学JAVA 日期类Date SimpleDateFormat Calendar

import java.util.Date;

/本类用于Date的常用方法测试/

public class TestDate2 {

public static void main(String[] args) {

//1.创建Date对象

Date d1 = new Date();

//2.获取从标准基准时间到现在时间的毫秒值,是一个时间差

System.out.println(d1.getTime());//1632404114206

//*1.0是为了变成浮点型,/1000变成秒,/60变成分,/60变成小时,/24变成天,/365变成年

System.out.println(d1.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365);//约等于51,从1970到2021

//3.打印d1就是当前的时间

System.out.println(d1);//Thu Sep 23 21:39:29 CST 2021

//4设置一个long值,作为毫秒为单位的时间差

long t = 10006060;

d1.setTime(t);

System.out.println(d1);//打印的就是从标准基准时间经过时间差t的时间

}

}

2. SimpleDateFormat

==========================================================================================

SimpleDateFormat 常用于格式化和解析日期

日期和时间格式由日期和时间模式字符串指定,字母与日期时间的对应关系如下:

在这里插入图片描述

2.1 常用构造函数


SimpleDateFormat() 用默认模式的日期格式构造 SimpleDateFormat

SimpleDateFormat(String pattern) 用给定模式的日期格式构造 SimpleDateFormat

2.2 日期转换格式工具类练习


创建包:cn.cxy.date

创建类:TestSDF.java

package cn.cxy.date;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

/本类用于测试SimpleDateFormat类/

public class TestSDF {

public static void main(String[] args) throws ParseException {

/01 格式化:从 Date 到 String/

//1.创建日期类对象,包含当前的时间

Date d = new Date();

//2.创建日期转换工具类的对象,此时使用的是无参构造

//SimpleDateFormat sdf = new SimpleDateFormat();

SimpleDateFormat sdf2 = new SimpleDateFormat(“yyyy/MM/dd hh:mm:ss”);

//3.通过刚刚创建好的工具类对象转换日期的格式

String s = sdf2.format(d);

//4.打印转换好的时间字符串:

//默认时间格式:21-9-23 下午11:18

//自定义时间格式:2021/09/23 10:21:39

System.out.println(s);

/解析:从String到 Date/

//1.定义一个时间字符串

String s2 = “2021/9/23 22:24:03”;

//报错:ParseException解析异常: Unparseable date不可分割日期: “2021/9/23 22:24:03”

//SimpleDateFormat sdf3 = new SimpleDateFormat(“yyyy年MM月dd日 hh:mm:ss”);

//2.利用含参构造创建工具类对象,指定格式,注意必须是规定格式,否则会抛出异常

SimpleDateFormat sdf3 = new SimpleDateFormat(“yyyy/MM/dd hh:mm:ss”);

//3.利用工具类对象对日期进行转换

Date d2= sdf3.parse(s2);

//4.打印转换好的日期

System.out.println(d2);//Thu Sep 23 22:24:03 CST 2021

}

}

2.3 日期转换综合练习


创建包:cn.cxy.date2

创建工具类:DateUtils.java

package cn.cxy.date2;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

/*本类用作日期类的工具类,一般工具类的要求:

  • 构造方法私有化 & 成员方法静态化*/

public class DateUtils {

//1.创建一个私有化的构造方法

private DateUtils(){}

//2.创建一个将日期转换为字符串的方法

//参数:日期对象Date 日期转换的格式:format 返回值类型:String

public static String dateToString(Date date, String format){

//1.通过传入的日期格式,创建指定的工具类对象

SimpleDateFormat sdf = new SimpleDateFormat(format);

//2.通过工具类对象将字符串转换为对应的日期字符串,并拿到转换后的字符串结果

String s = sdf.format(date);/转换/

//3.将最终转换的字符串结果返回

return s;

}

//3.创建一个将字符串转换为日期的方法

//参数:字符串对象String 日期转换的格式:format 返回值类型:Date

public static Date stringToDate(String s, String format) throws ParseException {

//1.通过传入的日期格式,创建指定的工具类对象

SimpleDateFormat sdf = new SimpleDateFormat(format);

//2.通过工具类对象将日期对象转换为对应的字符串,并拿到转换后的日期对象

Date d = sdf.parse(s);/解析/

//3.将最终转换的日期对象作为方法的结果返回

return d;

}

}

创建包:cn.cxy.date2

创建测试类:TestDate.java

package cn.cxy.date2;

import java.text.ParseException;

import java.util.Date;

/本类用于自定义日期工具类的测试类/

public class TestDate {

public static void main(String[] args) throws ParseException {

//1.创建日期类对象

Date d = new Date();

//2.调用自定义日期工具类的功能:将日期对象转换成字符串

String s = DateUtils.dateToString(d, “yyyy年MM月dd日 HH:mm:ss”);

String s2 = DateUtils.dateToString(d, “yyyy年MM月dd日”);

String s3 = DateUtils.dateToString(d, “HH:mm:ss”);

System.out.println(s);//2021年09月23日 10:55:32

System.out.println(s2);//2021年09月23日

System.out.println(s3);//10:58:21

//3.调用自定义工具类的功能,将字符串转换为对应的日期对象

//注意,此处的format格式必须与s字符串定义时的格式一致!!!否则转换会报错!

Date d2 = DateUtils.stringToDate(s, “yyyy年MM月dd日 HH:mm:ss”);

System.out.println(d2);//Thu Sep 23 23:01:21 CST 2021

}

}

3.Calendar日历类

===================================================================================

3.1 概念


Calendar 类是一个抽象类,不可直接实例化,但是它有一个直接已知子类GregorianCalendar

它为特定瞬间与还有比如年月日等日历字段之间的转换和操作提供了一些方法

3.2 常用方法


Calendar提供了一个方法getInstance()用于获取Calendar对象,它的日历字段就是当前的日期

int get(int field) 返回给定日历字段的值

abstract void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量

void set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值

3.3 入门案例


创建包:cn.cxy.date3

创建类:TestCalendar.java

package cn.cxy.date3;

import org.junit.Test;

import java.util.Calendar;

/本类用于练习日历类/

public class TestCalendar {

@Test

public void TestGet(){

//1.获取日历对象

Calendar c = Calendar.getInstance();

System.out.println©;//能获取很多信息,比如MONTH=8,我们现在是9月,说明月份是从0开始的

//2.通过获取到的日历对象,调用get(),传入对应的日历字段,就可以拿到对应的值

int year = c.get(Calendar.YEAR);

int month = c.get(Calendar.MONTH)+1;

int day = c.get(Calendar.DAY_OF_MONTH);

System.out.println(year + “年” + month + “月” + day + “日”);//2021年9月24日

}

@Test

public void TestAdd1(){

//1.获取日历对象

Calendar c = Calendar.getInstance();

//2.给指定的日历字段进行指定数目的加减操作,得到10年后的今天

c.add(Calendar.YEAR,+10);

//3.通过获取到的日历对象,调用get(),传入对应的日历字段,就可以拿到对应的值

int year = c.get(Calendar.YEAR);

int month = c.get(Calendar.MONTH)+1;

int day = c.get(Calendar.DAY_OF_MONTH);

//4.打印的就是10年后的今天:2031年9月24日

System.out.println(year + “年” + month + “月” + day + “日”);

}

@Test

public void TestAdd2(){//需求:打印1年后的7天后

//1.获取日历对象

Calendar c = Calendar.getInstance();

//2.给指定的日历字段进行指定数目的加减操作,得到10年后的今天

c.add(Calendar.YEAR,+1);

c.add(Calendar.DAY_OF_MONTH,+7);

//3.通过获取到的日历对象,调用get(),传入对应的日历字段,就可以拿到对应的值

int year = c.get(Calendar.YEAR);

int month = c.get(Calendar.MONTH)+1;

int day = c.get(Calendar.DAY_OF_MONTH);

//4.打印1年后的7天后:2022年10月1日

System.out.println(year + “年” + month + “月” + day + “日”);

}

@Test

总结

互联网大厂比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考。无论是哪家公司,都很重视高并发高可用技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

**另外本人还整理收藏了2021年多家公司面试知识点以及各种技术点整理 **

下面有部分截图希望能对大家有所帮助。

在这里插入图片描述
ay = c.get(Calendar.DAY_OF_MONTH);

//4.打印1年后的7天后:2022年10月1日

System.out.println(year + “年” + month + “月” + day + “日”);

}

@Test

总结

互联网大厂比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考。无论是哪家公司,都很重视高并发高可用技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

**另外本人还整理收藏了2021年多家公司面试知识点以及各种技术点整理 **

下面有部分截图希望能对大家有所帮助。

[外链图片转存中…(img-W49MO1Xe-1721190942543)]

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值