package com.tarzan.rms.tool.utils;
import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
/**
* 日期工具类
*
* @author tarzan liu
* @since JDK1.8
* @date 2021年5月11日
*/
@Slf4j
@UtilityClass
public class DateUtil {
public static final long ONE_DAY_SECONDS = 86400;
public static final String SHORT_FORMAT = "yyyyMMdd";
public static final String LONG_FORMAT = "yyyyMMddHHmmss";
public static final String concurrentFormat = "yyyyMMddHHmmssSSS";
public static final String shortConcurrentFormat = "yyMMddHHmmssSSS";
public static final String webFormat = "yyyy-MM-dd";
public static final String webMonthFormat = "yyyy-MM";
public static final String timeFormat = "HH:mm:ss";
public static final String monthFormat = "yyyyMM";
public static final String chineseDtFormat = "yyyy年MM月dd日";
public static final String chineseYMFormat = "yyyy年MM月";
public static final String datetimeFormat = "yyyy-MM-dd HH:mm:ss";
public static final String noSecondFormat = "yyyy-MM-dd HH:mm";
public static final String MdFormat = "MM-dd";
public static final long ONE_DAY_MILL_SECONDS = 86400000;
public static Date now() {
return new Date();
}
public static DateFormat getNewDateFormat(String pattern) {
DateFormat df = new SimpleDateFormat(pattern);
df.setLenient(false);
return df;
}
public static String format(Date date, String format) {
return new SimpleDateFormat(format).format(date);
}
public static String format(String dateStr, String oldFormat, String newFormat) throws ParseException {
String result = null;
DateFormat oldDateFormat = new SimpleDateFormat(oldFormat);
DateFormat newDateFormat = new SimpleDateFormat(newFormat);
Date date = oldDateFormat.parse(dateStr);
result = newDateFormat.format(date);
return result;
}
public static Date parseDateNoTime(String sDate) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat(SHORT_FORMAT);
return dateFormat.parse(sDate);
}
public static Date parseDateNoTime(String sDate, String format) throws ParseException {
if (StringUtils.isBlank(format)) {
throw new ParseException("Null format. ", 0);
}
DateFormat dateFormat = new SimpleDateFormat(format);
return dateFormat.parse(sDate);
}
public static Date parseDateNoTimeWithDelimit(String sDate, String delimit) throws ParseException {
sDate = sDate.replaceAll(delimit, "");
DateFormat dateFormat = new SimpleDateFormat(SHORT_FORMAT);
return dateFormat.parse(sDate);
}
public static Date parseDateLongFormat(String sDate) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat(LONG_FORMAT);
return dateFormat.parse(sDate);
}
public static Date parseDateNewFormat(String sDate) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat(datetimeFormat);
dateFormat.setLenient(false);
return dateFormat.parse(sDate);
}
public static Date parseDateNoSecondFormat(String sDate) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat(noSecondFormat);
dateFormat.setLenient(false);
return dateFormat.parse(sDate);
}
public static Date parseDateWebFormat(String sDate) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat(webFormat);
dateFormat.setLenient(false);
return dateFormat.parse(sDate);
}
public static Date parseDateWebMonthFormat(String sDate) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat(webMonthFormat);
dateFormat.setLenient(false);
return dateFormat.parse(sDate);
}
/**
* 计算当前时间几小时之后的时间
*
* @param date
* @param hours
* @return
*/
public static Date addHours(Date date, long hours) {
return addMinutes(date, hours * 60);
}
/**
* 计算当前时间几分钟之后的时间
*
* @param date
* @param minutes
* @return
*/
public static Date addMinutes(Date date, long minutes) {
return addSeconds(date, minutes * 60);
}
/**
* @param date1
* @param secs
* @return
*/
public static Date addSeconds(Date date1, long secs) {
return new Date(date1.getTime() + secs * 1000);
}
/**
* 判断输入的字符串是否为合法的小时
*
* @param hourStr
* @return true/false
*/
public static boolean isValidHour(String hourStr) {
if (!StringUtils.isEmpty(hourStr) && StringUtils.isNumeric(hourStr)) {
int hour = Integer.parseInt(hourStr);
return hour >= 0 && hour <= 23;
}
return false;
}
/**
* 判断输入的字符串是否为合法的分或秒
*
* @param str
* @return true/false
*/
public static boolean isValidMinuteOrSecond(String str) {
if (!StringUtils.isEmpty(str) && StringUtils.isNumeric(str)) {
int hour = Integer.parseInt(str);
return hour >= 0 && hour <= 59;
}
return false;
}
/**
* 取得新的日期
*
* @param date1 日期
* @param days 天数
* @return 新的日期
*/
public static Date addDays(Date date1, long days) {
Calendar cal = Calendar.getInstance();
cal.setTime(date1);
cal.add(Calendar.DATE, (int) days);
return cal.getTime();
}
public static String getTomorrowDateString(String sDate) throws ParseException {
Date aDate = parseDateNoTime(sDate);
aDate = addSeconds(aDate, ONE_DAY_SECONDS);
return getDateString(aDate);
}
public static String getTomorrowDateNewFMTString(String sDate) throws ParseException {
Date aDate = parseDateWebFormat(sDate);
aDate = addDays(aDate, 1);
return getWebDateString(aDate);
}
public static String getTomorrowDateNewFormatString(String sDate) throws ParseException {
Date aDate = parseDateNewFormat(sDate);
aDate = addDays(aDate, 1);
return getWebDateString(aDate);
}
public static String getLongDateString(Date date) {
DateFormat dateFormat = new SimpleDateFormat(LONG_FORMAT);
return getDateString(date, dateFormat);
}
public static String getNewFormatDateString(Date date) {
DateFormat dateFormat = new SimpleDateFormat(datetimeFormat);
return getDateString(date, dateFormat);
}
public static String getWebFormatDateString(Date date) {
DateFormat dateFormat = new SimpleDateFormat(webFormat);
return getDateString(date, dateFormat);
}
public static String getConcurrentFormatDateString(Date date) {
DateFormat dateFormat = new SimpleDateFormat(concurrentFormat);
return getDateString(date, dateFormat);
}
public static String getDateString(Date date, DateFormat dateFormat) {
if (date == null || dateFormat == null) {
return null;
}
return dateFormat.format(date);
}
public static String getYesterDayDateString(String sDate) throws ParseException {
Date aDate = parseDateNoTime(sDate);
aDate = addSeconds(aDate, -ONE_DAY_SECONDS);
return getDateString(aDate);
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
泰山RMS 资源管理系统 java web 代码 (2000个子文件)
0002f86c7632de77724676d1fc7f5bd89e40dd 710B
000f10414226cf87eaf8bc50d6256aec02ae0a 837B
0020b6dc1e725ad33963a34957c999cebc55d0 262B
003927f1906cbf110668d89ed3620875f24dc9 82B
003970bdc5bcc38b8b0728c33f26d673dfb962 2KB
003b190a1a2cc81fbaec7cac4ae8ba0070d6a5 75B
00469e91e9116c0e59257c7dd81597e3f00d8b 587B
0056bc4c30dc9cde5d18d6dc4216ec7475ba85 3KB
007c20e6d14bac9a52de4f4527c2c2b876238c 4KB
00816310e8d8d7eb8a0cd9db29fa6637e8f8d6 83B
008c484a2214134efbeed83c4e531a5b726dd0 46B
00b9c58f7248bb66fc0222712c75962e9057a9 107B
00c2fec666be82443e7ea206a5bbcfaf531721 45B
00d23a57039e8804e3f39b089453024612a96d 521B
00d27605300922bf6f19fa11c2a3d1dcccbf67 380B
00da15599673d232b3e51426b3bffb28f48223 262B
00ea094cbe8070179ef3453f04d4155178636a 176B
00f16ad23b4a2d5ebb9fbe4000e6826478ba7c 161B
00f7d23c4fac724cd34df29859818cf34d4b34 216B
01062bf2c66b68856df82162991148e2d77a21 9KB
0129991563cae720b5e8a2c819609b401f407d 76B
012b0a9256a18b3eeb4a8fe72917d93dce7945 176B
012b780a5dd4a3f65f11ac0929ebcf7f1a73ef 45B
0145b6c624848b2aade827f4acc0f02c82eb9d 78B
01520949c7a1513bdbba284844439e44066842 424B
016742325010eaae29dcd7fb06e461968044df 726B
017d3949d6d48e940c20d35aab072e2b16a6e7 149B
017e135456b4d4503a5e21e3b88205858ac522 2KB
0181c73976188ed25711c7b438a0800020f08b 282B
018ab761c3fb18896c8198ec804256ad2430dd 1KB
01a3e794551dd8067061129f4beaafddc8c5fd 523B
01a79509e40f61b1708f8d1b2a8a9b511f5985 602B
01a8d7e1108d8f06521a7e3253822dc772bf77 197B
01c4d880d96b1ae9ccc4d3e47844b84a23c913 3KB
01ca80b4cee27dc5096141a3eac40e171bf9bc 255B
01cfce97c03470119eb01d1cc5be835e5585b1 2KB
01d5e4fc0863b2d22f59e4046eaeaaaf893f0e 168B
02014a6e1bb5c83dd77274a1caabc4a7e369ed 186B
022b409daeb10f1da21f8db89632ed3f442f29 725B
0230b5cc6177c8454cb804d2deeb672f9d0623 186B
0235a4fa2e3ff5db698e300c97441801db72e3 2KB
0242286486349b12f5bf057376660c856c7430 204B
027be17b69fde152602b1d16d8188f56abf389 46B
027c4f2a2347f34866d7052d4b9f7a4a0c7b72 175B
028a1fa9b788a306344b9247b505368dde7bad 158B
02917da45ef5a24d0e9f1584700d22659e7e07 59B
02c4628191ff27c524658cbed4b70f89085420 78B
02ca6b3117f3d60193a9fe5ddf208058981085 684B
02ef384ee920728fdb5f34c39b23aec1ff813f 7KB
0302c97a867cfd3fd8773b8b72bd4d65834d0f 167B
0303dccd67c430df8e912dc3605855fb55cb6e 58B
03064c8a28091f099d3bdc5ebf6a9b8b2250de 614B
03068c38862c130ad6c2bb228c6ba65d63bbb6 752B
031674abe8c2b171ac801a3c2e1e22c6cc7055 169B
031eb6baac8232cb7a12577dc01d99a6b7ec64 46B
0324af15a36005e835cb18841a25ae4b09e308 230B
0334bd3b8531226a38d5d03160c688b2d8f84f 186B
0352eca380cedcbdea96e50ce352d77679d4d0 270B
0353f5167a046e0e39a65da2b303ac71168875 45B
0371d538c2d39d39a0e27a35e459c5bb21569d 216B
037ae74b5f5954c110a701586167279f6445f9 3KB
039bfb43102816cef75273dd60b5418f803ddd 94B
03b4acc952b85b16af425397907e5f6e92ba81 686B
03c21ba2e2c052ce3cff63a786fc26b951340b 812B
03d070787ad4886b59dfb29b988d13dc3c287f 46B
03e6387294d5c4109195346ed536a4897fe40b 76B
04004af5f8ff61323feb4a347df8c9f9914956 186B
0410eca14a3210d6a720ba47b01c54c3f7545a 3KB
042dc661f0005d55919a17b8af79a59cd2536f 445B
047a884b8dd56e4d2b1fd1e361bf6a11a43360 48B
047ea91d3caa3bc149ed5b8e9acf2b4deeefdc 285B
048c90620580b07e4d25206f464252a8f09292 47B
04a1900e94086b11aad792d447d8e75340c3e0 459B
04a3282ff2c767cd9aac5e83bf616cda863b16 75B
04d86b72ecbd0cc5fdc6735f7de58ce84658e1 48B
04ed989e1d791ef0e9f9034c968d68a2daaae1 83B
04fe6fc3bab006191d41ccad8502abd83beee6 79B
051c9234e49105ba8ac0a443c8414fc98e89d9 49B
0520aa9fd5a5e5872bff3cfa6d875e65901e42 134KB
052b5a7ea33d1005a5c4f61f970d9f1a88faed 3KB
052bb8954611aa3341673c22ed6ba2b81c25d5 262B
052d99c9f0125d0e78225a53da0f65f1611587 532B
055349b0c9d9a9e4773d14b83cab8b6a2ea03c 79B
0572a594e79b17d88cd142f60a69fc86c1819e 9KB
057fc27bf60b95dc16d99b2451fd373c1bac42 696B
0581b369a61982750c1c4180c7d830fdcdfec8 46B
0582b4f1fcdf62a5192328104ec01ae8dc4c59 44B
059a6be70a5e3116b8dc95b2099de8ada273d6 105B
05a7edecdcb633e52f0e53567a8db78e545e3b 535B
05bd35d8b1e5488387a4c2243ff6d89721dd9d 4KB
05cd1c68101f0a1762d459a2a0255843232c8a 1KB
05efaa91ce6b73bcb69ad97ed2910f9d393f4f 45B
05f7684a9ea6b56dd1871aa2d4e504c57bfa37 75B
05fa1b2d8587680569e94341c8f3d3aabd2a64 267B
06251334b61f077fb94cd7ed5a8e6a3ca10014 169B
063db8e7f22381eb9af5fdabb29a62dd2a0f3f 114B
0647545cea0aa3c4332e2ae52b198be5128916 79B
064fb493e6b650e9b13265800c01b6b2e67b41 215B
0651a10150a53af280d2fc66a4d297cea9eceb 80B
065f3b3f207e7c05fb8dcd8dc4723b227315fd 52B
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
泰山AI
- 粉丝: 2w+
- 资源: 284
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功