Java 中的日期与时间处理!

System.out.println(date.toLocaleString());

// 转换为 GMT 时区

System.out.println(date.toGMTString());

}

}

  • 预定义的字符串

  • yyyy:年

  • MM:月

  • dd:日

  • HH:小时

  • mm:分钟

  • ss:秒

  • 存在的问题

  • 不能转换时区;

  • 无法对日期和时间进行运算操作;

Calendar

可用于获取并设置年、月、日、时、分、秒,比 Date 多了一个可以作简单日期和时间运算的功能;

  • 基本用法

import java.util.*;

public class Main{

public staitc void main(String[] args) throws Exception{

// 获取当前时间

Calendar cal = Calendar.getInstance();

// 获取年、月、日、时、分、秒

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

int month = cal.get(Calendar.MONTH);

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

int hour = cal.get(Calendar.HOUR_OF_DAY);

int minute = cal.get(Calendar.MINUTE);

int second = cal.get(Calendar.SECOND);

}

}

  • 利用 getTime() 方法,可以将一个 Calendar 对象转换为 Date 对象,然后利用 SimpleDateFormat 进行格式化;

TimeZone

相较于 DateCalendar ,提供了时区转换功能,主要步骤如下:

  1. 清除所有字段;

  2. 设定指定时区;

  3. 设定日期和时间;

  4. 创建 SimpleDateFormat 并设定目标时区;

  5. 格式化获取的 Date 对象(对象无时区信息,时区信息存储在 SimpleDateFormat 中);

import java.util.*;

import java.text.*;

public class Main{

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

Calendar cal = Calendar.getInstance();

cal.clear();

// 设定时区

cal.setTimeZone(TimZone.getTimeZone(“Asia/Shanghai”));

// 设定时间

cal.set(2020, 3 /* 4 月 */, 25, 13, 30, 0);

// 显示时间:

var sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

sdf.setTimeZone(TimeZone.getTimeZone(“America/New_York”));

System.out.println(sdf.format(c.getTime()));

}

}

LocalDateTime


  • Java 8 引入 java.time 中所提供的新的时间和日期 API,主要涉及的类型:

  • 本地日期和时间:LocalDateTime、LocalDate、LocalTime

  • 带时区的日期和时间:ZonedDateTime

  • 时刻:Instant

  • 时区:ZoneId、ZoneOffset

  • 时间间隔:Duration

  • 格式化:DateTimeFormatter

  • 基本用法

import java.time.*;

public class Main{

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

// 当前日期

LocalDate date = LocalDate.now();

// 当前时间

LocalTime time = LocalTime.now();

// 当前日期和时间

LocalDateTime dateTime = LocalDateTime.now();

}

}

  • 输出标准为 ISO 8601,日期和时间之间的分割符是 T ,规定的标准格式如下:

  • 日期:yyyy-MM-dd

  • 时间:HH:mm:ss

  • 带毫秒的时间:HH:mm:ss.SSS

  • 日期和时间:yyyy-MM-dd T HH:mm:ss

  • 带毫秒的日期和时间:yyyy-MM-dd T HH:mm:ss.SSS

  • 对日期和时间进行调整:

  • 年:withYear()

  • 月:withMonth()

  • 日:withDayOfMonth()

  • 时:withHour()

  • 分:withMinute()

  • 秒:withSecond()

  • DurationPeriod

  • Duration:表示两个时刻间的时间间隔;

  • Period:表示两个日期之间的天数;

ZonedDateTime


用于表示带时区的日期和时间;

  • 时区转换及本地时间转换

import java.time.*;

public class Main{

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

ZonedDateTime zoneTime = ZonedDateTime.now(ZoneId.of(“Asia/Shanghai”));

// 中国时区转换为纽约时间

ZonedDateTime newZoneTime = zoneTime.withZoneSameInstant(ZoneId.of(“America/New_York”));

// 转换为本地时间

LocalDateTime local = zoneTime.toLocalDateTime();

System.out.println(zoneTime);

System.out.println(newZoneTime);

}

}

DateTimeFormatter


相较于 SimpleDateFormatDateTimeFormatter 不仅是不变对象,还是线程安全的,有如下两种使用方式;

  • 传入格式化字符串

DateTimeFormatter formatter = DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss”)

  • 传入格式化字符串同时指定 Locale

DateTimeFormatter formatter = DateTimeFormatter.ofPattern(“E, yyyy-MM-dd HH:mm:ss”, Locale.US)

  • 对比效果

import java.time.*;

import java.time.format.*;

import java.util.Locale;

public class Main{

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

ZonedDateTime zdt = ZonedDateTime.new();

var formatter = DateTimeFormatter.ofPattern(“yyyy-MM-dd’T’HH:mm ZZZZ”);

System.out.println(formatter.format(zdt));

var zhFormatter = DateTimeFormatter.ofPattern(“yyyy-MM-dd EE HH:mm”, Locale.CHINA);

System.out.println(zhFormatter.format(zdt));

var usFormatter = DateTimeFormatter.ofPattern(“E, MMMM/dd/yyyy EE HH:mm”, Locale.US);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

面试建议是,一定要自信,敢于表达,面试的时候我们对知识的掌握有时候很难面面俱到,把自己的思路说出来,而不是直接告诉面试官自己不懂,这也是可以加分的。

以上就是蚂蚁技术四面和HR面试题目,以下最新总结的最全,范围包含最全MySQL、Spring、Redis、JVM等最全面试题和答案,仅用于参考

一份还热乎的蚂蚁金服面经(已拿Offer)面试流程4轮技术面+1轮HR

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
4671a72faed303032d36.jpg" alt=“img” style=“zoom: 33%;” />

总结

面试建议是,一定要自信,敢于表达,面试的时候我们对知识的掌握有时候很难面面俱到,把自己的思路说出来,而不是直接告诉面试官自己不懂,这也是可以加分的。

以上就是蚂蚁技术四面和HR面试题目,以下最新总结的最全,范围包含最全MySQL、Spring、Redis、JVM等最全面试题和答案,仅用于参考

[外链图片转存中…(img-pNF5yuwX-1713110181845)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值