概述
日期类型转换工具类
package com.wh.common.util;
import org.apache.commons.lang3.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
/**
* 日期工具类
*/
public class LocalDateTimeUtil {
/**
* Date转LocalDateTime
*
* @param date Date对象
* @return
*/
public static LocalDateTime dateToLocalDateTime(Date date) {
return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
}
/**
* LocalDateTime转换为Date
*
* @param dateTime LocalDateTime对象
* @return
*/
public static Date localDateTimeToDate(LocalDateTime dateTime) {
return Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());
}
/**
* 格式化时间-默认yyyy-mm-dd格式
*
* @param dateTime LocalDate对象
* @return
*/
public static String RESUME_YEAR_MONTH(LocalDateTime dateTime) {
return formatDateTime(dateTime, "yyyy.MM");
}
/**
* 格式化时间-默认yyyy-mm-dd格式
*
* @param dateTime LocalDate对象
* @return
*/
public static String formatDateTimeYear(LocalDate dateTime) {
return formatDate(dateTime, "yyyy-MM-dd");
}
/**
* 格式化时间-默认yyyy.mm.dd格式
*
* @param dateTime LocalDate对象
* @return
*/
public static String formatDateTimeYearSpot(LocalDate dateTime) {
return formatDate(dateTime, "yyyy.MM");
}
/**
* 格式化时间-默认yyyy.MM格式
*
* @param dateTime LocalDateTime对象
* @return
*/
public static String formatDateTimeYearMonth(LocalDateTime dateTime) {
return formatDateTime(dateTime, "yyyy-MM");
}
public static String formatDateMonth(LocalDate dateTime) {
return formatDate(dateTime, "yyyy-MM");
}
/**
* 格式化时间-默认yyyy年MM月dd日
*
* @param dateTime LocalDateTime对象
* @return
*/
public static String DATE_PATTERN(LocalDateTime dateTime) {
return formatDateTime(dateTime, "yyyy年MM月dd日");
}
/**
* 格式化时间-默认yyyy
*
* @param dateTime LocalDateTime对象
* @return
*/
public static String DATE_PATTERN_YEAR(LocalDateTime dateTime) {
return formatDateTime(dateTime, "yyyy");
}
/**
* 格式化时间-默认yyyy/MM格式
*
* @param dateTime LocalDateTime对象
* @return
*/
public static String formatDateTimeYearMonthSlanting(LocalDateTime dateTime) {
return formatDateTime(dateTime, "yyyy/MM");
}
/**
* 格式化时间-默认日期时间格式yyyy.MM.dd HH:mm:ss
*
* @param dateTime LocalDateTime对象
* @return
*/
public static String formatDateTimeYearMonthStandings(LocalDateTime dateTime) {
return formatDateTime(dateTime, "yyyy.MM.dd HH:mm:ss");
}
/**
* 格式化时间-默认yyyy-MM-dd HH:mm格式
*
* @param dateTime LocalDateTime对象
* @return
*/
public static String formatDateTime(LocalDateTime dateTime) {
return formatDateTime(dateTime, "yyyy.MM.dd HH:mm");
}
/**
* 按pattern格式化时间-默认yyyy-MM-dd HH:mm:ss格式
*
* @param dateTime LocalDateTime对象
* @param pattern 要格式化的字符串
* @return
*/
public static String formatDateTime(LocalDateTime dateTime, String pattern) {
if (dateTime == null) {
return null;
}
if (pattern == null || pattern.isEmpty()) {
pattern = "yyyy.MM.dd HH:mm";
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return dateTime.format(formatter);
}
/**
* 按pattern格式化时间-默认yyyy格式
*
* @param dateTime LocalDateTime对象
* @param pattern 要格式化的字符串
* @return
*/
public static String formatDate(LocalDate dateTime, String pattern) {
if (dateTime == null) {
return null;
}
if (pattern == null || pattern.isEmpty()) {
pattern = "yyyy.MM.dd HH:mm";
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return dateTime.format(formatter);
}
/**
* 获取今天的00:00:00
*
* @return
*/
public static String getDayStart() {
return getDayStart(LocalDateTime.now());
}
/**
* 获取今天的23:59:59
*
* @return
*/
public static String getDayEnd() {
return getDayEnd(LocalDateTime.now());
}
/**
* 获取某天的00:00:00
*
* @param dateTime
* @return
*/
public static String getDayStart(LocalDateTime dateTime) {
return formatDateTime(dateTime.with(LocalTime.MIN));
}
/**
* 获取某天的23:59:59
*
* @param dateTime
* @return
*/
public static String getDayEnd(LocalDateTime dateTime) {
return formatDateTime(dateTime.with(LocalTime.MAX));
}
/**
* 获取本月第一天
*
* @return
*/
public static String getFirstDayOfMonth() {
return getFirstDayOfMonth(LocalDateTime.now());
}
/**
* 获取本月最后一天
*
* @return
*/
public static String getLastDayOfMonth() {
return getLastDayOfMonth(LocalDateTime.now());
}
/**
* 获取某月第一天
*
* @param dateTime LocalDateTime对象
* @return
*/
public static String getFirstDayOfMonth(LocalDateTime dateTime) {
return formatDateTime(dateTime.with(TemporalAdjusters.firstDayOfMonth()).with(LocalTime.MIN), "yyyy-MM-dd");
}
/**
* 获取某月最后一天
*
* @param dateTime LocalDateTime对象
* @return
*/
public static String getLastDayOfMonth(LocalDateTime dateTime) {
return formatDateTime(dateTime.with(TemporalAdjusters.lastDayOfMonth()).with(LocalTime.MAX), "yyyy-MM-dd");
}
public static LocalDateTime dateToDateTime(LocalDate date) {
return cn.hutool.core.date.LocalDateTimeUtil.parse(
cn.hutool.core.date.LocalDateTimeUtil.format(date, "yyyy-MM-dd") + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
/**
* date: 2021-02-01 11:32
* description: 获取指定日期的上一个月
*
* @param date,n
* @return java.lang.String
*/
public static String getPrevMonthDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);
return new SimpleDateFormat("yyyy-MM").format(calendar.getTime());
}
/**
* string转Date
*
* @return
*/
public static Date strToDate(String str) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = simpleDateFormat.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* string转localDate
*
* @return
*/
public static LocalDate strToLocalDate(String str) {
if (StringUtils.isNotEmpty(str)) {
LocalDate localDate = LocalDate.parse(str, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
return localDate;
}
return null;
}
/**
* localDateTime转string
*
* @return
*/
public static String localDateTimeToStr(LocalDateTime localDateTime) {
if (Objects.nonNull(localDateTime)) {
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return df.format(localDateTime);
}
return null;
}
/**
* 获取指定日期的年月
*
* @return
*/
public static String getYearMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH));
return new SimpleDateFormat("yyyy-MM").format(calendar.getTime());
}
/**
* date: 2021-03-09
* description: 获取当前月份的年月
*
* @param date,n
* @return java.lang.String
*/
public static String getCurrentMonthDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH));
return new SimpleDateFormat("yyyy-MM").format(calendar.getTime());
}
/**
*
* @param minDate 最小时间 2015-01
* @param maxDate 最大时间 2015-10
* @return 日期集合 格式为 年-月
* @throws Exception
*/
public static List<String> getMonthBetween(String minDate, String maxDate) throws Exception {
ArrayList<String> result = new ArrayList<String>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");//格式化为年月
Calendar min = Calendar.getInstance();
Calendar max = Calendar.getInstance();
min.setTime(sdf.parse(minDate));
min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);
max.setTime(sdf.parse(maxDate));
max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);
Calendar curr = min;
while (curr.before(max)) {
result.add(sdf.format(curr.getTime()));
curr.add(Calendar.MONTH, 1);
}
return result;
}
/**
* 获取某年第一天日期
* @param year 年份
* @return LocalDate
*/
public static LocalDate getYearFirst(int year){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
LocalDate currYearFirst = calendar.getTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
return currYearFirst;
}
/**
* 获取某年最后一天日期
* @param year 年份
* @return LocalDate
*/
public static LocalDate getYearLast(int year){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.roll(Calendar.DAY_OF_YEAR, -1);
LocalDate currYearLast = calendar.getTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
return currYearLast;
}
}
最后
以上就是贪玩马里奥为你收集整理的字符串、日期互相转换的全部内容,希望文章能够帮你解决字符串、日期互相转换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复