Java常用类(2)--日期时间相关类Date、Calendar、LocalDateTime、Instant全面(1)

文章详细介绍了Java中日期时间处理的各种类和方法,包括SimpleDateFormat、Calendar、LocalDate/Time/DateTime、Instant以及DateTimeFormatter的使用,同时讨论了自学编程与报班学习的选择,并指出线上教育的优势。
摘要由CSDN通过智能技术生成

在这里插入图片描述

关于指定格式:

在这里插入图片描述

在这里插入图片描述

解析(格式化逆过程):

Date parse(String source):依据格式解析字符串,以生成一个日期(注意格式的匹配对应,否则抛异常)

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class SimpleTest {

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

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”); //带参指定格式实例化

Date parse = sdf.parse(“2020-12-20 22:03:19”);

System.out.println(parse);

}

}

在这里插入图片描述



java.util.Calendar(日历)类


这是一个抽象(abstract)类,主用用于完成日期字段之间相互操作的功能。

实例化:

①使用Calendar.getInstance()该静态方法

②调用它的子类GregorianCalendar的构造器

常用方法:

import java.util.Calendar;

import java.util.Date;

public class CalendarTest {

public static void main(String[] args) {

Calendar instance = Calendar.getInstance();

//get():int get(int field)

int ofMouth = instance.get(Calendar.DAY_OF_MONTH);

System.out.println(ofMouth);

int ofYear = instance.get(Calendar.DAY_OF_YEAR);

System.out.println(ofYear);

//set():void set(int field,int value)

instance.set(Calendar.DAY_OF_MONTH,9);

System.out.println(instance.get(Calendar.DAY_OF_MONTH));

//add:void add(int field,int amount)

instance.add(Calendar.DAY_OF_MONTH,-2);

System.out.println(instance.get(Calendar.DAY_OF_MONTH));

//getTime:final Date getTime() 将日历类型转换为Date类型

Date time = instance.getTime();

System.out.println(time);

//setTime:final void setTime(Date date) 将Date类型转换为日历类型

instance.setTime(new Date());

System.out.println(“********” + instance.getTime());

}

}

在这里插入图片描述

一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND。



java.time类


LocalDate、LocalTime、LocalDateTime 类是其中较重要的几个子类,它们的实例

是不可变的对象,分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。

实例化:

在这里插入图片描述

import java.time.LocalDate;

import java.time.LocalDateTime;

import java.time.LocalTime;

public class TimeTest {

public static void main(String[] args) {

//now() 获取当前日期,时间,日期+时间

LocalDate now1 = LocalDate.now();

LocalTime now2 = LocalTime.now();

LocalDateTime now3 = LocalDateTime.now();

System.out.println(now1);

System.out.println(now2);

System.out.println(now3);

//of() 设置指定的年月日时分秒,没有偏移量

LocalDateTime of = LocalDateTime.of(2021, 9, 9, 15, 36, 40);

System.out.println(of);

}

}

在这里插入图片描述

其他常用方法:

在这里插入图片描述

import java.time.LocalDateTime;

public class TimeTest {

public static void main(String[] args) {

LocalDateTime now = LocalDateTime.now();

//getXxx() 获取相关的属性

System.out.println(now.getDayOfWeek());

System.out.println(now.getMonth());

System.out.println(now.getMonthValue()); //…

//withXxx() 设置相关的属性,不可变性

LocalDateTime nowWith = now.withDayOfMonth(8);

System.out.println(nowWith);

System.out.println(now);

//plusXxx() 加,不可变性

LocalDateTime pl = now.plusMonths(2);

System.out.println(pl);

//minusXxx() 减,不可变性

LocalDateTime mi = now.minusDays(8);

System.out.println(mi);

}

}

在这里插入图片描述



java.time.Instant类


Instant:时间线上的一个瞬时点。 这可能被用来记录应用程序中的事件时间

戳。

在这里插入图片描述

import java.time.Instant;

import java.time.OffsetDateTime;

import java.time.ZoneOffset;

public class InstantTest {

public static void main(String[] args) {

//获取本初子午线当前的标准时间

Instant now = Instant.now();

System.out.println(now);

//结合时区,添加当地时间偏移量

OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHours(8));

System.out.println(offsetDateTime);

//返回1970-01-01 00:00:00到当前时间的毫秒数,即为时间戳

long l = now.toEpochMilli();

System.out.println(l);

//返回在1970-01-01 00:00:00基础上加上指定毫秒数之后的Instant类的对象

Instant instant = Instant.ofEpochMilli(l);

System.out.println(instant);

}

}

在这里插入图片描述



java.time.format.DateTimeFormatter 类


该类提供了三种格式化方法:

①预定义的标准格式,如:ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME

②本地化相关的格式,如:ofLocalizedDateTime(FormatStyle.LONG)

③自定义的格式,如:ofPattern(“yyyy-MM-dd hh:mm:ss”)

在这里插入图片描述

import java.time.LocalDateTime;

import java.time.format.DateTimeFormatter;

import java.time.format.FormatStyle;

import java.time.temporal.TemporalAccessor;

public class FormatterTest {

public static void main(String[] args) {

//方式一:预定义的标准格式

DateTimeFormatter isoDateTime = DateTimeFormatter.ISO_LOCAL_DATE_TIME;

//格式化

String format1 = isoDateTime.format(LocalDateTime.now());

System.out.println(format1);

//解析

TemporalAccessor parse1 = isoDateTime.parse(format1);

System.out.println(parse1);

//方式二:本地化相关的格式

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);

//格式化

String format2 = dateTimeFormatter.format(LocalDateTime.now());

System.out.println(format2);

//解析

TemporalAccessor parse2 = dateTimeFormatter.parse(format2);

System.out.println(parse2);

//方式三:自定义格式

DateTimeFormatter dateTimeFormatter3 = DateTimeFormatter.ofPattern(“yyyy-MM-dd hh:mm:ss”);

//格式化

String format3 = dateTimeFormatter3.format(LocalDateTime.now());

System.out.println(format3);

//解析

TemporalAccessor parse3 = dateTimeFormatter3.parse(format3);

System.out.println(parse3);

}

最后

为什么我不完全主张自学?
平台上的大牛基本上都有很多年的工作经验了,你有没有想过之前行业的门槛是什么样的,现在行业门槛是什么样的?以前企业对于程序员能力要求没有这么高,甚至十多年前你只要会写个“Hello World”,你都可以入门这个行业,所以以前要入门是完全可以入门的。
②现在也有一些优秀的年轻大牛,他们或许也是自学成才,但是他们一定是具备优秀的学习能力,优秀的自我管理能力(时间管理,静心坚持等方面)以及善于发现问题并总结问题。
如果说你认为你的目标十分明确,能做到第②点所说的几个点,以目前的市场来看,你才真正的适合去自学。

除此之外,对于绝大部分人来说,报班一定是最好的一种快速成长的方式。但是有个问题,现在市场上的培训机构质量参差不齐,如果你没有找准一个好的培训班,完全是浪费精力,时间以及金钱,这个需要自己去甄别选择。

我个人建议线上比线下的性价比更高,线下培训价格基本上没2W是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:
①价格:线上的价格基本上是线下的一半;
②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;
③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;
④课程:从课程内容来说,确实要比线下讲的更加深入。

应该学哪些技术才能达到企业的要求?(下图总结)

如果说你认为你的目标十分明确,能做到第②点所说的几个点,以目前的市场来看,你才真正的适合去自学。

除此之外,对于绝大部分人来说,报班一定是最好的一种快速成长的方式。但是有个问题,现在市场上的培训机构质量参差不齐,如果你没有找准一个好的培训班,完全是浪费精力,时间以及金钱,这个需要自己去甄别选择。

我个人建议线上比线下的性价比更高,线下培训价格基本上没2W是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:
①价格:线上的价格基本上是线下的一半;
②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;
③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;
④课程:从课程内容来说,确实要比线下讲的更加深入。

应该学哪些技术才能达到企业的要求?(下图总结)

[外链图片转存中…(img-ozbABtk8-1714364607115)]

[外链图片转存中…(img-t0QFkcZe-1714364607116)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值