Date

Date date = new Date(); //获取当前时间        

System.out.println(date.getYear() + 1900); // 必须加上1900         System.out.println(date.getMonth() + 1); // 0~11,必须加上1         System.out.println(date.getDate()); // 1~31,不能加1


Calendar

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

 // 获取当前时间:        

Calendar c = Calendar.getInstance();        

int y = c.get(Calendar.YEAR);         i

nt m = 1 + c.get(Calendar.MONTH);      

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

int w = c.get(Calendar.DAY_OF_WEEK);        

int hh = c.get(Calendar.HOUR_OF_DAY);        

int mm = c.get(Calendar.MINUTE);        

int ss = c.get(Calendar.SECOND);        

int ms = c.get(Calendar.MILLISECOND);        

System.out.println(y + "-" + m + "-" + d + " " + w + " " + hh + ":" + mm + ":" + ss + "." + ms);


TimeZone

Calendar和Date相比,它提供了时区转换的功能。

  TimeZone tzDefault = TimeZone.getDefault(); // 当前时区       

 TimeZone tzGMT9 = TimeZone.getTimeZone("GMT+09:00"); // GMT+9:00时区        

TimeZone tzNY = TimeZone.getTimeZone("America/New_York"); // 纽约时区         System.out.println(tzDefault.getID()); // Asia/Shanghai

时区的唯一标识是以字符串表示的ID,我们获取指定TimeZone对象也是以这个ID为参数获取,GMT+09:00、Asia/Shanghai都是有效的时区ID。要列出系统支持的所有ID,请使用TimeZone.getAvailableIDs()。


LocalDateTime

是java8,java.time提供新的API

 LocalDate d = LocalDate.now(); // 当前日期        

LocalTime t = LocalTime.now(); // 当前时间        

LocalDateTime dt = LocalDateTime.now(); // 当前日期和时间

提供了对日期和时间进行加减的非常简单的链式调用

 LocalDateTime dt = LocalDateTime.of(2019, 10, 26, 20, 30, 59);        

System.out.println(dt);        

// 加5天减3小时:        

LocalDateTime dt2 = dt.plusDays(5).minusHours(3);        

System.out.println(dt2); // 2019-10-31T17:30:59        

// 减1月:        

LocalDateTime dt3 = dt2.minusMonths(1);        

System.out.println(dt3); // 2019-09-30T17:30:59

对时间和日期进行调整

 LocalDateTime dt = LocalDateTime.of(2019, 10, 26, 20, 30, 59);        

System.out.println(dt);        

// 日期变为31日:        

LocalDateTime dt2 = dt.withDayOfMonth(31);        

System.out.println(dt2);

// 2019-10-31T20:30:59        

// 月份变为9:        

LocalDateTime dt3 = dt2.withMonth(9);        

System.out.println(dt3); // 2019-09-30T20:30:59

LocalDateTime还有一个通用的with()方法允许我们做更复杂的运算

 // 本月第一天0:00时刻:        

LocalDateTime firstDay = LocalDate.now().withDayOfMonth(1).atStartOfDay();         System.out.println(firstDay);        

// 本月最后1天:        

LocalDate lastDay = LocalDate.now().with(TemporalAdjusters.lastDayOfMonth());         System.out.println(lastDay);        

// 下月第1天:        

LocalDate nextMonthFirstDay = LocalDate.now().with(TemporalAdjusters.firstDayOfNextMonth());         System.out.println(nextMonthFirstDay);        

// 本月第1个周一:        

LocalDate firstWeekday = LocalDate.now().with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));  System.out.println(firstWeekday);

要判断两个LocalDateTime的先后,可以使用isBefore()、isAfter()方法,对于LocalDate和LocalTime

  LocalDateTime now = LocalDateTime.now();        

LocalDateTime target = LocalDateTime.of(2019, 11, 19, 8, 15, 0);         System.out.println(now.isBefore(target));         System.out.println(LocalDate.now().isBefore(LocalDate.of(2019, 11, 19)));         System.out.println(LocalTime.now().isAfter(LocalTime.parse("08:15:00")));


DateTimeFormatter

如果要自定义输出的格式,或者要把一个非ISO 8601格式的字符串解析成LocalDateTime

  // 自定义格式化:        

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");         System.out.println(dtf.format(LocalDateTime.now()));        

// 用自定义格式解析:        

LocalDateTime dt2 = LocalDateTime.parse("2019/11/30 15:16:17", dtf);         System.out.println(dt2);


Duration

表示两个时刻得时间间隔

  LocalDateTime start = LocalDateTime.of(2019, 11, 19, 8, 15, 0);        

LocalDateTime end = LocalDateTime.of(2020, 1, 9, 19, 25, 30);        

Duration d = Duration.between(start, end);        

System.out.println(d); // PT1235H10M30S


Period

表示两个日期间隔的天数

Period p = LocalDate.of(2019, 11, 19).until(LocalDate.of(2020, 1, 9));        

System.out.println(p); // P1M21D


ZonedDateTime

和LocalDateTime相比,增加了时区,可以理解为LocalDateTime+ZonedId

  ZonedDateTime zbj = ZonedDateTime.now(); // 默认时区        

ZonedDateTime zny = ZonedDateTime.now(ZoneId.of("America/New_York")); // 用指定时区获取当前时间

另一种方式是通过给一个LocalDateTime附加一个ZoneId,就可以变成ZonedDateTime

LocalDateTime ldt = LocalDateTime.of(2019, 9, 15, 15, 16, 17);         ZonedDateTime zbj = ldt.atZone(ZoneId.systemDefault());        

ZonedDateTime zny = ldt.atZone(ZoneId.of("America/New_York"));

要转换时区,首先我们需要有一个ZonedDateTime对象,然后,通过withZoneSameInstant()将关联时区转换到另一个时区,转换后日期和时间都会相应调整。

 // 以中国时区获取当前时间:        

ZonedDateTime zbj = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));        

// 转换为纽约时间:        

ZonedDateTime zny = zbj.withZoneSameInstant(ZoneId.of("America/New_York"));


DateTimeFormatter

使用旧的Date对象时,我们用SimpleDateFormat进行格式化显示。使用新的LocalDateTime或ZonedDateTime时,我们要进行格式化显示,就要使用DateTimeFormatter。

和SimpleDateFormat不同的是,DateTimeFormatter不但是不变对象,它还是线程安全的。因为SimpleDateFormat不是线程安全的,使用的时候,只能在方法内部创建新的局部变量。而DateTimeFormatter可以只创建一个实例,到处引用。

创建DateTimeFormatter

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");

另一种是加入时区

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm", Locale.US);

 ZonedDateTime zdt = ZonedDateTime.now();        

var formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm ZZZZ");         System.out.println(formatter.format(zdt));        

var zhFormatter = DateTimeFormatter.ofPattern("yyyy MMM dd EE HH:mm", Locale.CHINA);         System.out.println(zhFormatter.format(zdt));        

var usFormatter = DateTimeFormatter.ofPattern("E, MMMM/dd/yyyy HH:mm", Locale.US);         System.out.println(usFormatter.format(zdt));

输出结果为

2019-09-15T23:16 GMT+08:00

2019 9月 15 周日 23:16 Sun

September/15/2019 23:16

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/90983.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/90983.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/90983.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】从连接数据库开始:JDBC 编程入门指南

个人主页:♡喜欢做梦 欢迎 👍点赞 ➕关注 ❤️收藏 💬评论 目录 🌟一、什么是JDBC? 🌟二、JDBC编程的步骤 ✨使用步骤 ✨DriverManger 💫定义 💫DriverManger的主要功能 …

重生之我在暑假学习微服务第一天《MybatisPlus-上篇》

本系列参考黑马程序员微服务课程,有兴趣的可以去查看相关视频,本系列内容采用渐进式方式讲解微服务核心概念与实践方法,每日更新确保知识点的连贯性。通过系统化学习路径帮助开发者掌握分布式系统构建的关键技术。读者可通过平台订阅功能获取…

odoo-060 git版本:发布/生产版本落后开发版本部署

文章目录问题起源目前解决问题起源 周五提交了一个版本,本来打算使用这个版本的,周末更新。 下一个功能比较复杂,周一提交,结果周末没有更新,导致现在还有没测试过的不能发布的。 说明: 原来只有一个mast…

YotoR模型:Transformer与YOLO新结合,打造“又快又准”的目标检测模型

【导读】在目标检测领域,YOLO系列以其高效的推理速度广受欢迎,而Transformer结构则在精度上展现出强大潜力。如何兼顾二者优势,打造一个“又快又准”的模型,是近年来研究热点之一。本文介绍的一项新研究——YotoR(You …

白杨SEO:流量的本质是打开率?搞用户搜索流量的玩法怎么做?

大家好,我是白杨SEO,专注研究SEO十年以上,全网SEO流量实战派,AI搜索优化研究者。上周六参加了生财航海家在杭州举行的私域运营大会,主题是围绕私域获客,私域IP,AI私域,精细化管理。白…

Java优雅使用Spring Boot+MQTT推送与订阅

在物联网(IoT)和智能设备横行的今天,你有没有遇到这样的问题:服务端需要实时把报警、状态更新、控制指令推送给客户端;安卓 App、嵌入式设备、网页等终端,需要轻量且稳定的连接方式;HTTP 太“重…

多目标粒子群优化(MOPSO)解决ZDT1问题

前言 提醒: 文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。 其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展…

Coze Studio概览(三)--智能体管理

本文简要分析了Coze Studio中智能体管理功能,包括功能、架构以及核心流程。Coze Studio 智能体管理功能分析 1. 智能体管理架构概览 Coze Studio的智能体管理系统基于DDD架构,主要包含以下核心模块: 后端架构层次: API层 (coze): …

idea运行tomcat日志乱码问题

原因在于idea和tomcat文件编码格式不一样。可以把idea编码改成UTF-8 File | Settings | Editor | File Encodings 里面把GBK都改成UTF-8help里面 Edit Custom VM Options 添加一行-Dfile.encodingUTF-8重启idea

Javaweb - 13 - AJAX

发送请求的几种方式1. 浏览器的地址框中输入地址,回车2. html --> head --> scrip / linkimg 自动发送请求,无需手动触发3. a 标签,form 表单标签需要手动控制提交产生,且往往需要在新的页面上获得响应信息4. 运行 JS 代码…

qt常用控件-06

文章目录qt常用控件-06spinBox/doubleSpinBoxdateTimeEditdialSliderlistWIdgettableWidgettreeWidget结语很高兴和大家见面,给生活加点impetus!!开启今天的编程之路!! 今天我们进一步c11中常见的新增表达 作者&#…

小智源码分析——音频部分(二)

一、利用创建好的对象来调用音频服务 上周从上图的getaudiocode()方法进去感受了一下底层小智的构造如何实现。所以用一个codec来接收我们所构造的音频对象。下来是用构造好的音频对象来调用音频初始化服务Initialize,因为启动函数Application函数的类中有audio_ser…

菜鸟的C#学习(四)

文章目录一、格式说明符1.1、数字格式说明符(适用于数值类型:int, double, decimal 等)1. 标准数字格式2. 自定义数字格式1.2、日期时间格式说明符(适用于 DateTime, DateTimeOffset)1. 标准日期时间格式2. 自定义日期…

基于黑马教程——微服务架构解析(二)

本篇文章基于黑马程序员的微服务课程内容,结合个人学习过程中的理解与思考进行整理。本节将围绕以下几个问题展开:什么是网关和配置管理前面那篇文章,我们了解如何把一个单体的项目拆成分布式微服务项目,并且讲解一下各个服务之间…

Text2SQL智能问答系统开发(一)

开发一个面向企业的chatBI工作流 已完成 基础 Text2SQL 功能实现 实现用户输入自然语言问题后,系统能够自动生成 SQL 并执行返回结果。用户交互优化 支持用户通过补充信息对查询进行调整,提升易用性。模糊时间处理机制 对“最近”“近期”等模糊时间关…

Python HTML模块详解:从基础到实战

一、模块体系全景图 Python生态中处理HTML的工具可分为三大层级: 标准库基础层:html模块 html.parser第三方增强层:BeautifulSoup(搭配解析器)专业级工具层:lxml requests-html 二、标准库核心模块详解…

PyTorch常用Tensor形状变换函数详解

PyTorch常用Tensor形状变换函数详解 在PyTorch中,对张量(Tensor)进行形状变换是深度学习模型构建中不可或缺的一环。无论是为了匹配网络层的输入要求,还是为了进行数据预处理和维度调整,都需要灵活运用各种形状变换函数…

自主智能Agent如何重塑工作流自动化:技术、经济与未来展望

自主智能Agent的崛起与工作流自动化的范式革命2025年7月,当OpenAI向付费用户推出具备网页浏览和代码执行能力的ChatGPT Agent时,工作流自动化领域迎来了一场静默但彻底的革命。这款不再满足于简单问答的智能体,在一个安全的虚拟计算机环境中运…

技术架构、行业应用、工具链整合、挑战应对及未来趋势五大模块,引用多个权威来源数据与开源项目实现细节。

以下是一份关于AI技术落地的实战经验总结报告,结合代码示例、可视化图表与行业案例,内容分为技术架构、行业应用、工具链整合、挑战应对及未来趋势五大模块,引用多个权威来源数据与开源项目实现细节。AI技术落地实战指南:从架构设…

第 9 篇:神经网络初探——当AI拥有了“大脑”,世界从此不同

《人工智能AI之机器学习基石》系列⑨ 专栏核心理念: 用通俗语言讲清楚机器学习的核心原理,强调“洞察 + 技术理解 + 应用连接”,构建一个完整的、富有启发性的知识体系。