localdatetime.now,localdatetimenow存入数据库

http://www.itjxue.com  2023-01-05 21:47  来源:未知  点击次数: 

程序包java.time不存在

java.time包时JSR-310的实现,在Java 8 中提供。它的实现目标是克服旧的日期时间实现中所有的缺陷,新的日期/时间API的一些设计原则是:

不变性:新的日期/时间API中,所有的类都是不可变的,这对多线程环境有好处。

关注点分离:新的API将人可读的日期时间和机器时间(unix timestamp)明确分离,它为日期(Date)、时间(Time)、日期时间(DateTime)、时间戳(unix timestamp)以及时区定义了不同的类。

清晰:在所有的类中,方法都被明确定义用以完成相同的行为。举个例子,要拿到当前实例我们可以使用now()方法,在所有的类中都定义了format()和parse()方法,而不是像以前那样专门有一个独立的类。为了更好的处理问题,所有的类都使用了工厂模式和策略模式,一旦你使用了其中某个类的方法,与其他类协同工作并不困难。

实用操作:所有新的日期/时间API类都实现了一系列方法用以完成通用的任务,如:加、减、格式化、解析、从日期/时间中提取单独部分,等等。

可扩展性:新的日期/时间API是工作在ISO-8601日历系统上的,但我们也可以将其应用在非ISO的日历上。

Java日期/时间API包

Java日期/时间API包含以下相应的包。

java.time包:这是新的Java日期/时间API的基础包,所有的主要基础类都是这个包的一部分,如:LocalDate,

LocalTime, LocalDateTime, Instant, Period,

Duration等等。所有这些类都是不可变的和线程安全的,在绝大多数情况下,这些类能够有效地处理一些公共的需求。

java.time.chrono包:这个包为非ISO的日历系统定义了一些泛化的API,我们可以扩展AbstractChronology类来创建自己的日历系统。

java.time.format包:这个包包含能够格式化和解析日期时间对象的类,在绝大多数情况下,我们不应该直接使用它们,因为java.time包中相应的类已经提供了格式化和解析的方法。

java.time.temporal包:这个包包含一些时态对象,我们可以用其找出关于日期/时间对象的某个特定日期或时间,比如说,可以找到某月的第一天或最后一天。你可以非常容易地认出这些方法,因为它们都具有“withXXX”的格式。

java.time.zone包:这个包包含支持不同时区以及相关规则的类。

java8新增了localdate和localtim,要如何处理日期和时间?

JDK8中,新增了三个类,用以处理时间。

LocalDate专门处理日期,LocalTime专门处理时间,LocalDateTime包含了日期和时间,而且对于很多复杂的问题,都提供了现成的方法,比如:获取2017年12月的第一个周一,这样的处理,在以前,是很复杂的,而现在,只需要一行代码即可。(使用前,需要将JDK升级到1.8)

下面,简单了记录了这两个类的一些常见用法:

[java]?view plain?copy

package?test;

import?java.time.DayOfWeek;

import?java.time.LocalDate;

import?java.time.LocalDateTime;

import?java.time.LocalTime;

import?java.time.temporal.TemporalAdjusters;

import?java.util.Calendar;

/**

*?Created?by?lightClouds917

*?Date?2017/11/6

*?Description:Java8中处理时间和日期的类

*

SQL??-?Java

--------------------------

date?-?LocalDate

time?-?LocalTime

timestamp?-?LocalDateTime

*/

public?class?DateTest2?{

public?static?void?main(String[]?args){

test1(); ? ? ?

test2();

Calendar?calendar?=?Calendar.getInstance();

System.out.println(calendar.getTime());

}

/**

*?处理日期?LocalDate

*/

public?static?void?test1(){

//获取当前日期???2017-11-06

LocalDate?today?=?LocalDate.now();

System.out.println(today); ?

//构造日期???2017-10-08

LocalDate?today2?=?LocalDate.of(2017,10,8);

System.out.println(today2);

//构造日期???2017-02-22????字符串严格按照yyyy-MM-dd ? ? ?

LocalDate?today3?=?LocalDate.parse("2017-02-22");

System.out.println(today3);

//本月第一天??2017-11-01

LocalDate?firstDayOfMonth?=?today.with(TemporalAdjusters.firstDayOfMonth());

System.out.println(firstDayOfMonth);

//本月第二天??2017-11-02???第n天

LocalDate?secondDayOfMonth?=?today.withDayOfMonth(2);

System.out.println(secondDayOfMonth);

//本月最后一天?2017-02-28??方便解决任何年份的二月份多少天

LocalDate?lastDayOfMonth?=?today3.with(TemporalAdjusters.lastDayOfMonth());

System.out.println(lastDayOfMonth);

//获取2017年12月的第一个周一???2017-12-04 ?

LocalDate?firstDayOf201712?=?LocalDate.parse("2017-12-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));

System.out.println(firstDayOf201712);

}

/**

*?处理时间??LocalTime

*/

public?static?void?test2(){

//获取当前时间??含有毫秒值??17:18:41.571

LocalTime?now?=?LocalTime.now();

System.out.println(now);

//获取当前时间???去掉毫秒值???17:45:41

LocalTime?now1?=?LocalTime.now().withNano(0);

System.out.println(now1);

//00:46:46.651??提供了把时分秒都设为0的方法

LocalTime?now2?=?LocalTime.now().withHour(0);

System.out.println(now2);

//构造时间??00:20:55 ?

LocalTime?time1?=?LocalTime.of(0,20,55);

System.out.println(time1);

//构造时间??05:43:22

LocalTime?time2?=?LocalTime.parse("05:43:22");

System.out.println(time2);

//标准时间?2017-11-06T17:53:15.930

LocalDateTime?lt?=?LocalDateTime.now();

System.out.println(lt);

}

}

MP高级功能-自动填充

针对项目中有新增时间,修改时间,新增人,修改人等字段;

最笨的办法是:新增时,new Date()或者是java8的LocalDateTime.now()来设置到新增时间上;修改时,再new Date()设置到修改字段上;只要是有这两个字段的地方都这么干,每一块都写一次。

再进一步,可以再sql中直接写入mysql的内置函数,比如:update_time=now();不过针对新增人,修改人却用不用了内置函数,添加不了默认值了。

最终,我们可以使用MP提供的自动填充功能。

如何在java8中愉快地处理日期和时间java8新增了localdate和localtim

java8中的localdate和localtime用法举例如下:

这两个方法使我们可以方便的实现将旧的日期类转换为新的日期类,具体思路都是通过Instant当中介,然后通过Instant来创建LocalDateTime(这个类可以很容易获取LocalDate和LocalTime),新的日期类转旧的也是如此,将新的先转成LocalDateTime,然后获取Instant,接着转成Date,具体实现细节如下:

// 01. java.util.Date -- java.time.LocalDateTime

public void UDateToLocalDateTime() {

java.util.Date date = new java.util.Date();

Instant instant = date.toInstant();

ZoneId zone = ZoneId.systemDefault();

LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);

}

// 02. java.util.Date -- java.time.LocalDate

public void UDateToLocalDate() {

java.util.Date date = new java.util.Date();

Instant instant = date.toInstant();

ZoneId zone = ZoneId.systemDefault();

LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);

LocalDate localDate = localDateTime.toLocalDate();

}

// 03. java.util.Date -- java.time.LocalTime

public void UDateToLocalTime() {

java.util.Date date = new java.util.Date();

Instant instant = date.toInstant();

ZoneId zone = ZoneId.systemDefault();

LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);

LocalTime localTime = localDateTime.toLocalTime();

}

// 04. java.time.LocalDateTime -- java.util.Date

public void LocalDateTimeToUdate() {

LocalDateTime localDateTime = LocalDateTime.now();

ZoneId zone = ZoneId.systemDefault();

Instant instant = localDateTime.atZone(zone).toInstant();

java.util.Date date = Date.from(instant);

}

// 05. java.time.LocalDate -- java.util.Date

public void LocalDateToUdate() {

LocalDate localDate = LocalDate.now();

ZoneId zone = ZoneId.systemDefault();

Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();

java.util.Date date = Date.from(instant);

}

// 06. java.time.LocalTime -- java.util.Date

public void LocalTimeToUdate() {

LocalTime localTime = LocalTime.now();

LocalDate localDate = LocalDate.now();

LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);

ZoneId zone = ZoneId.systemDefault();

Instant instant = localDateTime.atZone(zone).toInstant();

java.util.Date date = Date.from(instant);

}

spring boot比较当前时间大于过去时间

方法如下:

在任意写的一个main方法中,使用:LocalDateTimenow=LocalDateTime.now(),获取到的当前时间都是正确的,但是在springboot启动后,任意一个方法中使用上述获取当前时间都是比当前系统时间早8个小时。

Java获取当前时间前几个小时

import?java.time.LocalDateTime;

import?java.time.temporal.ChronoUnit;

/**

?*?@author?red

?*?@since?1.8

?*/

public?class?App?{

????public?static?void?main(String[]?args)?{

????????//当前时间

????????LocalDateTime?dateTime?=?LocalDateTime.now();

????????//当前时间两个小时前

????????LocalDateTime?before?=?dateTime.minus(2,?ChronoUnit.HOURS);

????????//当前时间两个小时后

????????LocalDateTime?after?=?dateTime.plus(2,?ChronoUnit.HOURS);

????}

}

(责任编辑:IT教学网)

更多

相关心得技巧文章