package cn.hvacren.web.util.commons;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
public class DateUtils {
public static final String TIME_PATTERN_WITH_UNIT = "yyyy年MM月dd日 HH:mm:ss";
public static final String TIME_PATTERN_NO_UNIT = "yyyy-MM-dd HH:mm:ss";
public static final String TIME_PATTERN_NO_UNIT_T = "yyyy-MM-dd'T'HH:mm:ss.S";
/**
* 计算两个日期之间时间间隔<br>
* 年、月、日<br>
* <要求>开始日期前于结束日期<br>
* <要求>起止日期非空, 异常情况下返回【-1,-1,-1】
*
* @param startDate
* 开始日期
* @param endDate
* 结束日期
* @return 时间间隔(年、月、日格式)
* @author xieyuejun
*/
// public static Period getPeriodBetween(Date startDate, Date endDate) {
// if (startDate == null || endDate == null) {
// return Period.of(-1, -1, -1);
// }
// int startYear = jef.tools.DateUtils.getYear(startDate);
// int startMonth = jef.tools.DateUtils.getMonth(startDate);
// int startDay = jef.tools.DateUtils.getDay(startDate);
//
// int endYear = jef.tools.DateUtils.getYear(endDate);
// int endMonth = jef.tools.DateUtils.getMonth(endDate);
// int endDay = jef.tools.DateUtils.getDay(endDate);
// // 如果同一天
// if (startYear == endYear && startMonth == endMonth && startDay == endDay) {
// return Period.of(0, 0, 0);
// }
// LocalDate endLocalDate = LocalDate.of(endYear, endMonth, endDay);
// LocalDate startLocalDate = LocalDate.of(startYear, startMonth, startDay);
// int startMinute = jef.tools.DateUtils.getMinute(startDate);
// int startHour = jef.tools.DateUtils.getHour(startDate);
// int endMinute = jef.tools.DateUtils.getMinute(endDate);
// int endHour = jef.tools.DateUtils.getHour(endDate);
// if (startHour > endHour || (startHour == endHour && startMinute > endMinute)) {
// startLocalDate = startLocalDate.plusDays(1);
// }
// return Period.between(startLocalDate, endLocalDate);
// }
/**
* 获取0时区
*
* @return
*/
public static SimpleDateFormat get0TimeZone() {
SimpleDateFormat ISO8601_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
ISO8601_FORMAT.setTimeZone(TimeZone.getTimeZone("GMT+00"));
return ISO8601_FORMAT;
}
/**
* 获取0时区时间
*
* @return
*/
public static String get0TimeZoneStr(Date date) {
SimpleDateFormat ISO8601_FORMAT = new SimpleDateFormat(TIME_PATTERN_NO_UNIT_T);
return ISO8601_FORMAT.format(date);
}
/**
* 获取指定时间之后的零时区的时间
*
* @param d
* @param month
* @return
*/
public static String get0TimeAfterMonth(Date d, int month) {
return get0TimeZone().format(getTimeAfterMonth(d, month).getTime());
}
/**
* 获取几个月之后的时间
*
* @param d
* 当前时间
* @param month
* 月份
* @return 时间
*/
public static Date getTimeAfterMonth(Date d, int month) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(d);
calendar.add(Calendar.MONTH, month);
return calendar.getTime();
}
/**
* 获取两个时间的时间差
*
* @param endDate
* @param beginDate
* @return
*/
public static String getDatePoorPart(Date endDate, Date beginDate) {
try {
if (beginDate == null || endDate == null) {
return "";
}
String[] unit = { "分钟", "小时", "天", "周", "月", "年" };
long[] time = new long[6];
int[] poor = { 60, 24, 7, 4, 12, 1 };
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(endDate);
c2.setTime(beginDate);
if (c1.after(c2)) {
// 计算相差多少秒
time[0] = c1.get(Calendar.SECOND) - c2.get(Calendar.SECOND);
// 如果是负数,从分钟中减一
if (time[0] < 0) {
time[0] += poor[0];
c1.set(Calendar.MINUTE, c1.get(Calendar.MINUTE) - 1);
}
// 计算相差多少分
time[0] = c1.get(Calendar.MINUTE) - c2.get(Calendar.MINUTE);
// 如果是负数,从小时中减一
if (time[0] < 0) {
time[0] += poor[0];
c1.set(Calendar.HOUR_OF_DAY, c1.get(Calendar.HOUR_OF_DAY) - 1);
}
// 计算相差多少小时
time[1] = c1.get(Calendar.HOUR_OF_DAY) - c2.get(Calendar.HOUR_OF_DAY);
// 如果是负数,从天数中减一
if (time[1] < 0) {
time[1] += poor[1];
c1.set(Calendar.DAY_OF_MONTH, c1.get(Calendar.DAY_OF_MONTH) - 1);
}
// 计算相差多少天
// 如果是负数,从月份中减一
if (c1.get(Calendar.DAY_OF_MONTH) >= c2.get(Calendar.DAY_OF_MONTH)) {
time[3] = time[2] = c1.get(Calendar.DAY_OF_MONTH) - c2.get(Calendar.DAY_OF_MONTH);
} else {
time[3] = time[2] = (c2.getActualMaximum(Calendar.DAY_OF_MONTH) - c2.get(Calendar.DAY_OF_MONTH)) + c1.get(Calendar.DAY_OF_MONTH);
c1.set(Calendar.MONTH, c1.get(Calendar.MONTH) - 1);
}
// 计算相差多少周
time[3] = time[3] / 7;
// 计算相差多少天
time[2] = time[2] % 7;
// 计算相差多少月
time[4] = c1.get(Calendar.MONTH) - c2.get(Calendar.MONTH);
// 如果是负数,从年份中减一
if (time[4] < 0) {
time[4] += poor[4];
c1.set(Calendar.YEAR, c1.get(Calendar.YEAR) - 1);
}
// 计算相差多少年
time[5] = c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR);
}
String result = "";
for (int i = time.length - 1, j = 0; i >= 0; i--) {
// 只显示前2个时间单位
if (time[i] != 0) {
result = result + time[i] + unit[i];
j++;
if (j == 2) {
break;
} else {
result = result + " ";
}
}
}
return result;
}catch (Exception e) {
return null;
}
}
/**
* 普通时间类型转换为日历类型
*
* @param date
* @return
* @throws DatatypeConfigurationException
*/
public static XMLGregorianCalendar dateToXmlDate(Date date) throws DatatypeConfigurationException {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
DatatypeFactory dtf = DatatypeFactory.newInstance();
XMLGregorianCalendar dateType = dtf.newXMLGregorianCalendar();
dateType.setYear(cal.get(Calendar.YEAR));
dateType.setMonth(cal.get(Calendar.MONTH) + 1);
dateType.setDay(cal.get(Calendar.DAY_OF_MONTH));
dateType.setHour(cal.get(Calendar.HOUR_OF_DAY));
dateType.setMinute(cal.get(Calendar.MINUTE));
dateType.setSecond(cal.get(Calendar.SECOND));
return dateType;
}
/**
*
* @param date
* @return
*/
public static String dateToString(Date date) {
SimpleDateFormat format = new SimpleDateFormat(TIME_PATTERN_WITH_UNIT);
return format.format(date);
}
public static String dateToStrinWithNoUnit(Date date) {
SimpleDateFormat f
没有合适的资源?快使用搜索试试~ 我知道了~
用户注册源代码demo
共240个文件
xml:110个
java:36个
jpg:24个
需积分: 12 24 下载量 100 浏览量
2018-04-19
22:15:50
上传
评论
收藏 844KB RAR 举报
温馨提示
用户注册代码demo,采用手机号码验证码注册,后台校验,验证码存redis
资源推荐
资源详情
资源评论
收起资源包目录
用户注册源代码demo (240个子文件)
RSA.class 5KB
User.class 4KB
AjaxResult.class 3KB
UserServiceImpl.class 2KB
RSAUtils.class 2KB
TestRestful.class 2KB
SwaggerConfig.class 1KB
UserRegistVO.class 1KB
SystemRestful.class 1KB
UserRestful.class 1KB
WebApplication.class 792B
UserMapper.class 718B
IndexController.class 626B
WebApplicationTests.class 615B
CommonResultCode.class 560B
FilterConfig.class 543B
UserExceptionCode.class 394B
ExceptionCode.class 341B
UserService.class 186B
mvnw.cmd 5KB
bootstrap.min.css 98KB
bootstrap.min.css 98KB
style.css 19KB
style.css 19KB
owl.transitions.css 4KB
owl.transitions.css 4KB
owl.theme.css 2KB
owl.theme.css 2KB
owl.carousel.css 1KB
owl.carousel.css 1KB
AjaxLoader.gif 1KB
AjaxLoader.gif 1KB
.gitignore 268B
index.html 45KB
index.html 45KB
archive.html 27KB
archive.html 27KB
single.html 24KB
single.html 24KB
contact.html 19KB
contact.html 19KB
web.iml 13KB
hvacren.iml 885B
maven-wrapper.jar 46KB
DateUtils.java 12KB
StringUtils.java 6KB
IPUtils.java 6KB
RSA.java 5KB
User.java 4KB
UserServiceImpl.java 4KB
RateUtil.java 3KB
JWTUtils.java 3KB
RedisConfig.java 3KB
RestTemplateUtils.java 2KB
AjaxResult.java 2KB
UserPasswordUtil.java 2KB
RestTemplateConfig.java 2KB
EncryptUtils.java 2KB
CollectionUtils.java 2KB
RSAUtils.java 2KB
MessageDigestUtils.java 2KB
TestRestful.java 1KB
UserRegistVO.java 1KB
FastJson2JsonRedisSerializer.java 1KB
RandomUtil.java 1KB
SystemRestful.java 969B
SwaggerConfig.java 926B
UserRestful.java 864B
UserStatus.java 835B
UserMapper.java 685B
CommonResultCode.java 635B
ExceptionCode.java 558B
VerificateCode.java 518B
UserExceptionCode.java 405B
WebApplication.java 403B
FilterConfig.java 385B
IndexController.java 358B
WebApplicationTests.java 328B
UserService.java 232B
UUIDUtil.java 150B
1.jpg 38KB
1.jpg 38KB
8.jpg 24KB
8.jpg 24KB
banner.jpg 22KB
banner.jpg 22KB
banner-2.jpg 21KB
banner-2.jpg 21KB
6.jpg 21KB
6.jpg 21KB
tt.jpg 21KB
tt.jpg 21KB
7.jpg 21KB
7.jpg 21KB
4.jpg 20KB
4.jpg 20KB
5.jpg 18KB
5.jpg 18KB
2.jpg 14KB
2.jpg 14KB
共 240 条
- 1
- 2
- 3
资源评论
小明说
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Flume进阶-自定义拦截器jar包
- Dubins曲线算法讲解和在运动规划中的使用.pdf
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.dta
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.xlsx
- Reeds+Shepp曲线算法讲解和实现.pdf
- 毕业设计基于SpringBoot+MyBatisPlus+MySQL+Vue的外卖配送信息系统源代码+数据库
- 词向量(Word Embeddings)是自然语言处理(NLP)领域的一种重要技术.txt
- Surfer,线性函数
- MyBatis 的动态 SQL 是其核心特性之一.txt
- 时代的sdddsddsddsd
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功