|
|
@ -1,10 +1,15 @@ |
|
|
|
package org.jeecg.common.util; |
|
|
|
|
|
|
|
import java.beans.PropertyEditorSupport; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.math.RoundingMode; |
|
|
|
import java.sql.Timestamp; |
|
|
|
import java.text.DateFormat; |
|
|
|
import java.text.ParseException; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
import java.time.*; |
|
|
|
import java.time.format.DateTimeFormatter; |
|
|
|
import java.time.temporal.ChronoUnit; |
|
|
|
import java.util.Calendar; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.GregorianCalendar; |
|
|
@ -21,6 +26,11 @@ import org.springframework.util.StringUtils; |
|
|
|
*/ |
|
|
|
public class DateUtils extends PropertyEditorSupport { |
|
|
|
|
|
|
|
|
|
|
|
private static String YYYYMMDDHHMMSS = "yyyy-MM-dd HH:mm:ss"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static ThreadLocal<SimpleDateFormat> date_sdf = new ThreadLocal<SimpleDateFormat>() { |
|
|
|
@Override |
|
|
|
protected SimpleDateFormat initialValue() { |
|
|
@ -634,6 +644,60 @@ public class DateUtils extends PropertyEditorSupport { |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public static LocalDateTime dateToDateTime(Date date) { |
|
|
|
Instant instant = date.toInstant(); |
|
|
|
return LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); |
|
|
|
} |
|
|
|
public static float getUntilHours(Date date1, Date date2) { |
|
|
|
LocalDateTime localDate1 = dateToDateTime(date1); |
|
|
|
LocalDateTime localDate2 = dateToDateTime(date2); |
|
|
|
float senonds = Duration.between(localDate1, localDate2).get(ChronoUnit.SECONDS); |
|
|
|
return senonds / 3600; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* 解析字符串为日期 |
|
|
|
* <p> |
|
|
|
* 说明: |
|
|
|
* 1. 该方法主要解决yyyy-MM-dd格式文本字符串无法直接转换为LocalDateTime的问题 |
|
|
|
* |
|
|
|
* @param source 需要解析的日期字符串 |
|
|
|
* @param formatPattern 日期格式化模式 |
|
|
|
* @return 格式化后的日期 |
|
|
|
*/ |
|
|
|
public static Date parseStringToLocalDateTime(String source, String formatPattern) { |
|
|
|
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(formatPattern); |
|
|
|
LocalDate localDate = LocalDate.parse(source, dateTimeFormatter); |
|
|
|
LocalDateTime localDateTime = localDate.atStartOfDay(); |
|
|
|
return dateTimeToDate(localDateTime); |
|
|
|
} |
|
|
|
public static Date dateTimeToDate(LocalDateTime localDateTime) { |
|
|
|
Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); |
|
|
|
return date; |
|
|
|
} |
|
|
|
/** |
|
|
|
|
|
|
|
将字符串转为日期 |
|
|
|
@param date |
|
|
|
@return |
|
|
|
*/ |
|
|
|
public static Date getDateymdhms(String date) { |
|
|
|
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(YYYYMMDDHHMMSS); |
|
|
|
LocalDateTime localDateTime = LocalDateTime.parse(date, dateTimeFormatter); |
|
|
|
return dateTimeToDate(localDateTime); |
|
|
|
} |
|
|
|
|
|
|
|
public static void main(String[] args) { |
|
|
|
Date date1 = getDateymdhms("2024-12-12 12:00:00"); |
|
|
|
Date date2 = getDateymdhms("2024-12-12 09:20:30"); |
|
|
|
float untilHours = getUntilHours(date2, date1); |
|
|
|
BigDecimal bigDecimal = new BigDecimal(String.valueOf(untilHours)); |
|
|
|
System.out.println(bigDecimal.setScale(2, RoundingMode.HALF_UP)); |
|
|
|
} |
|
|
|
|
|
|
|
public static Long getCurrentTimestamp() { |
|
|
|
return Long.valueOf(DateUtils.yyyymmddhhmmss.get().format(new Date())); |
|
|
|
} |
|
|
|