localdatetime转化为date_LocalDateTime用法(jdk1.8 )

前言

最近看别人项目源码,发现Java8新的日期时间API很方便强大,所以转载该入门介绍博客,记录一下。

使用新时间日期API的必要性

在java8以前,或许:

当你在做有关时间日期的操作时,你会想到用Date;

当你在做日期、月份、天数相加减时,你会想到用Calendar;

当你需要对时间日期进行格式化时,你会想到使用SimpleDateFormat或DateFormat下的其他子类;

……

但是,你必须知道,以上有关的时间日期操作对象,都是可变的、线程不安全的,同时,如果作为一个经常写过类似代码的人来说,尽管有相关对象提供某些操作,但并不能很快、很简单的就能得到最终想要的结果,如:要计算两个时间点之间相差的年、月、日、周、时、分、秒等,这些计算尽管原有API也能够实现,但原有API除了线程不安全之外,另外一个不足之处就是代码繁琐,性能低!

为何我们总提多线程下,线程不安全?对于初学者来说,可能觉得能够简单实现出功能就已经足够,但是真正的开发项目是不可能仅仅考虑功能的实现的,还要考虑项目的安全性、稳定性、高性能、高可用性等等!因此,作为java开发者,多线程的知识是必不可少的。而也正因为多线程,才会出现一大堆问题(简称线程安全性问题),作为开发者,就应该写出不仅能实现功能的代码,还要是线程安全的代码。那么,学习并熟悉掌握新的线程安全的API就显得非常重要了!

没错,java8出的新的时间日期API都是线程安全的,并且性能更好,代码更简洁!

新时间日期API常用、重要对象介绍

ZoneId: 时区ID,用来确定Instant和LocalDateTime互相转换的规则

Instant: 用来表示时间线上的一个点(瞬时)

LocalDate: 表示没有时区的日期, LocalDate是不可变并且线程安全的

LocalTime: 表示没有时区的时间, LocalTime是不可变并且线程安全的

LocalDateTime: 表示没有时区的日期时间, LocalDateTime是不可变并且线程安全的

Clock: 用于访问当前时刻、日期、时间,用到时区

Duration: 用秒和纳秒表示时间的数量(长短),用于计算两个日期的“时间”间隔

Period: 用于计算两个“日期”间隔

其中,LocalDate、LocalTime、LocalDateTime是新API里的基础对象,绝大多数操作都是围绕这几个对象来进行的,有必要搞清楚:

LocalDate : 只含年月日的日期对象

LocalTime :只含时分秒的时间对象

LocalDateTime : 同时含有年月日时分秒的日期对象

本文将以实例讲解日常开发中常用到的时间日期操作,如:

获取当前日期、时间

指定时间日期创建对应的对象

计算两个时间点的间隔

判断两个时间的前后

时间日期的格式化

获取时间戳

时间、日期相加减

获取给定时间点的年份、月份、周、星期等

……

新时间日期API详解与示例

获取当前时间

运行结果:

image.png

根据指定日期/时间创建对象

运行结果:

image.png

日期时间的加减

对于LocalDate,只有精度大于或等于日的加减,如年、月、日;

对于LocalTime,只有精度小于或等于时的加减,如时、分、秒、纳秒;

对于LocalDateTime,则可以进行任意精度的时间相加减;

运行结果:

image.png

将年、月、日等修改为指定的值,并返回新的日期(时间)对象

析: 其效果与时间日期相加减差不多,如今天是2018-01-13,要想变为2018-01-20有两种方式

a. localDate.plusDays(20L) -> 相加指定的天数

b. localDate.withDayOfYear(20) -> 直接指定到哪一天

运行结果:

image.png

获取日期的年月日周时分秒

运行结果:

image.png

时间日期前后的比较与判断

判断是否为闰年

java8时钟 : clock()

时间戳

事实上Instant就是java8以前的Date,

可以使用以下两个类中的方法在这两个类型之间进行转换,

比如Date.from(Instant)就是用来把Instant转换成java.util.date的,

而new Date().toInstant()就是将Date转换成Instant的

计算时间、日期间隔

Duration:用于计算两个“时间”间隔

Period:用于计算两个“日期”间隔

运行结果:

image.png

当计算程序的运行时间时,应当使用时间戳Instant

时间日期的格式化(格式化后返回的类型是String)

1. 使用jdk自身配置好的日期格式

运行结果:

image.png

2. 使用自定义格式

运行结果:

image.png

注:自定义转化的格式一定要与日期类型对应

LocalDate只能设置仅含年月日的格式

LocalTime只能设置仅含时分秒的格式

LocalDateTime可以设置含年月日时分秒的格式

代码如下:

运行结果:

image.png

将时间字符串形式转化为日期对象

运行结果:

image.png

注:格式的写法必须与字符串的形式一样

2018-01-13 21:27:30 对应 yyyy-MM-dd HH:mm:ss

20180113213328 对应 yyyyMMddHHmmss

否则会报运行时异常!

但要记住:得到的最终结果都是类似2018-01-13T21:27:30的格式

因为在输出LocalDateTime对象时,会调用其重写的toString方法。

将时间日期对象转为格式化后的时间日期对象

运行结果:

image.png

long毫秒值转换为日期

运行结果:

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

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

相关文章

计算机里的东西不小心删除如何恢复,原先在电脑界面上的文件不小心删除了怎么恢复,谢谢了...

那就得看看删除的方式是哪种的了,如果是普通删除的文件,可以打开回收站查看是否有想文件的存在,如果有的话进行还原的操作,如果未发现的话,可以参考下述的恢复教程进行文件的恢复工作:步骤一:到…

我的处女作《设计模式之禅》——前言

终于可以写前言了,这说明本书已经基本完成,可以长嘘一口气了。 为什么写这本书 为什么写这本书?今年5月份,我在JavaEye上发了一个帖子,其中提到自己已经工作9年了,总觉得这9年不应该就这么荒废了&#xff0…

bc汇编指令用法_汇编指令imul 与 操作数

最近在练《天书夜读》,在2.3 C语言的数组与结构 章节里有如下代码(注:我用的是VS2005):--- e:\practice\visual studio 2005\projects\reverseme\reverseme\reverseme.c ----// ReverseMe.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h&…

css设置导航栏背景颜色,更改bootstrap导航栏背景颜色和字体颜色

3 个答案:答案 0 :(得分:46)我使用以下CSS成功设置了Bootstrap导航栏的样式。你也没有在CSS中定义任何字体,这就是字体没有改变的原因。可以在here找到使用此CSS的网站。.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav…

UML 图例

对UML不是很了解,简单地了解一下UML设计中有的图例及基本作用。首先对UML中的各个图的功用做一个简单介绍: 1、用例图 描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模…

python计数器函数_Python计数器Counter

老男孩教育的PYTHON自动化开发课程自2013年第1期到现在已经走到了第12期,2年半的时间里,我们每一期都在对课程细节进行不同程度的优化,课程总时长也从最开始的2个月延长至第12期的五到六月,更新内容足足翻了一倍多,我们…

从物理服务器拷贝文件到容器,docker容器与物理机的文件传输—docker cp命令

ocker cp :用于容器与主机之间的数据拷贝。语法docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATHOPTIONS说明:-L :保持源目标中的链接实例将主机./vern目录拷贝到容器hssme的/home/cloudera目录下。docker c…

idea代码样式模板_阿里p3c(代码规范,eclipse插件、模版,idea插件)

阿里p3c一、说明代码规范检查插件p3c,是根据《阿里巴巴Java开发手册》转化而成的自动化插件。(高级黑:P-3C“Orion”,反潜巡逻机,阿里大概取p3c先进,监测,发现潜在问题的意思)二、源码地址下载下来之后为&a…

ajax require 用法,require.js使用方法整理

一、使用原因1、实现js异步加载,避免网页失去响应;2、管理模块之间的依赖性,便于代码编写和维护;二、使用说明1.加载require.js加载这个文件,也可能造成网页失去响应。解决办法有两个,一个是把它放在网页底…

根据数据库中的值用js设置RadioButtonList选中与否

function setcheck(id,ddd)//id表示控件ID号,ddd表示值{var radiolist id; for(var i0;i<document.getElementById(radiolist).rows.length;i) { for(var x0;x<document.getElementById(radiolist).rows[i].cells.length;x) { if(document.getElementById…

服务器与本地文件共享文件夹,云服务器对本地服务器共享文件夹

云服务器对本地服务器共享文件夹 内容精选换一换当您成功创建私有镜像后&#xff0c;镜像的状态为“正常”&#xff0c;您可以使用该镜像创建服务器实例或云硬盘&#xff0c;也可以将镜像共享给其他帐号&#xff0c;或者复制镜像到其他区域。私有镜像的生命周期如图1所示。远程…

rocksdb原理_教你玩转MyRocks/RocksDB—STATISTICS与后台线程篇

0. Intro在facebook的MySQL版本(以下称为MyRocks)中&#xff0c;RocksDB是可选的存储引擎。相比于InnoDB引擎&#xff0c;RocksDB的一个重要的优势是它使用更少的磁盘空间。在生产系统中&#xff0c;特别是用户数在亿级以上的互联网应用&#xff0c;磁盘空间是其中比较大的成本…

有效需求分析的基本流程

今天工作不算太忙&#xff0c;本来下午是要开会&#xff0c;由于这周的idea比较少&#xff0c;就把AT会议移到下周一起开&#xff0c;所有今天没有什么忙的&#xff0c;只是开了简单的idea评审会议&#xff0c;同时对组内的一些问题进行简单的整理&#xff0c;本来想整理出好的…

PHP Socket 编程

让我们以一个简单的例子开始---一个接收输入字符串,处理并返回这个字符串到客户端的TCP服务.下面是相应的代码: PHP 代码: -------------------------------------------------------------------------------- <? // 设置一些基本的变量 $host "192.168.1.99";…

服务器可否替代手机芯片,基于ARM的处理器能取代桌面处理器吗?

科技的发展速度太快了&#xff0c;从手机进入智能时代开始&#xff0c;手机处理器的速度也越来越快了&#xff0c;以前人们办公都是在电脑端进行的&#xff0c;随着手机的功能越来越多&#xff0c;手机处理器速度越来越快&#xff0c;已经有一小部分的工作可以在手机上完成了。…

tr闭包_嵌套函数及闭包

这篇文章其实是要讲闭包的一些初级应用&#xff0c;但是为了将闭包&#xff0c;我们还是从嵌套函数开始说吧&#xff0c;纵使所有的JavaScript函数都可以说是闭包&#xff0c;但是只有当一个嵌套函数被导出到它所定义的作用域之外时&#xff0c;这种闭包才是有趣的。【嵌套函数…

转]从一个男人关注的事情上 可以看出他的修养和抱负

一、拥有自信和风度 男人到了二十几岁后&#xff0c;就要开始学着用心去经营自己了&#xff0c;它体现在自己的思想与涵养上。自信是一个男人最重要的品质&#xff0c;自信的男人就你像一只在暴风雨中战斗的海鸥。海鸥所要说的只有一句话“让暴风雨来的再猛烈些吧”&#xff0…

python歌星大奖赛_在歌星大奖赛中,有10个评委为参赛选手打分,分数为1到100分。...

/*********************************************************************************** 功能描述&#xff1a; 求一个比赛的选手成绩** 作 者&#xff1a; 郭强生** 修改日期&#xff1a; 2012-08-06** 备 注&#xff1a; 在歌星大奖赛中&#xff0c;有10…

投资最重要的事读后感_《投资最重要的事》读书笔记

《投资最重要的事》读书笔记《投资最重要的事》作者详细阐述了“第二层次思维”、价格/价值关系、耐心等待机会、以及多元化投资等概念&#xff0c;对自身的决策以及偶尔的失误做出了坦诚的评价&#xff0c;为读者进行批判性思考、风险评估、建立投资策略提供了宝贵的经验教训&…

VS2010 RTM

Visual Studio 2010 已经RTM并且在Msdn subscription提供了下载和试用版本&#xff0c;为了迎接这一产品&#xff0c;我在这个周末格式化了系统分区重新安装了Windows 7 x64。 在最新的Visual Assist配合下&#xff0c;整个IDE较之之前的版本更加舒适。 比如&#xff0c;选中的…