package com.xnnovel.xy.utils;
import org.springframework.util.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 日期工具类
*
* @author:Mr.Yang
* @date:2018/9/13 20:50
*/
public class DateUtils {
public static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final String MINUTE_PATTERN = "yyyy-MM-dd HH:mm";
public static final String HOUR_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_PATTERN = "yyyy-MM-dd";
public static final String MONTH_PATTERN = "yyyy-MM";
public static final String MONTH_PATTERN_CHINA = "yyyy年MM月";
public static final String YEAR_PATTERN = "yyyy";
public static final String MINUTE_ONLY_PATTERN = "mm";
public static final String HOUR_ONLY_PATTERN = "HH";
public static final String MONTH_DAY_PATTREN = "MMdd";
//以下参数用来计算几秒前,几分钟前。
private static final long ONE_MINUTE = 60000L;
private static final long ONE_HOUR = 3600000L;
private static final long ONE_DAY = 86400000L;
private static final long ONE_WEEK = 604800000L;
private static final String ONE_SECOND_AGO = "秒前";
private static final String ONE_MINUTE_AGO = "分钟前";
private static final String ONE_HOUR_AGO = "小时前";
private static final String ONE_DAY_AGO = "天前";
private static final String ONE_MONTH_AGO = "月前";
private static final String ONE_YEAR_AGO = "年前";
/**
* 日期相加减天数
*
* @param date 如果为Null,则为当前时间
* @param days 加减天数
* @param includeTime 是否包括时分秒,true表示包含
* @return
* @throws ParseException
*/
public static Date dateAdd(Date date, int days, boolean includeTime) throws ParseException {
if (date == null) {
date = new Date();
}
if (!includeTime) {
SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.DATE_PATTERN);
date = sdf.parse(sdf.format(date));
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, days);
return cal.getTime();
}
/**
* 时间格式化成字符串
*
* @param date Date
* @param pattern StrUtils.DATE_TIME_PATTERN || StrUtils.DATE_PATTERN, 如果为空,则为yyyy-MM-dd
* @return
* @throws ParseException
*/
public static String dateFormat(Date date, String pattern) {
if (StringUtils.isEmpty(pattern)) {
pattern = DateUtils.DATE_PATTERN;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(date);
}
/**
* 字符串解析成时间对象
*
* @param dateTimeString String
* @param pattern StrUtils.DATE_TIME_PATTERN || StrUtils.DATE_PATTERN,如果为空,则为yyyy-MM-dd
* @return
* @throws ParseException
*/
public static Date dateParse(String dateTimeString, String pattern) throws ParseException {
if (StringUtils.isEmpty(pattern)) {
pattern = DateUtils.DATE_PATTERN;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.parse(dateTimeString);
}
/**
* 将日期时间格式成只有日期的字符串(可以直接使用dateFormat,Pattern为Null进行格式化)
*
* @param dateTime Date
* @return
* @throws ParseException
*/
public static String dateTimeToDateString(Date dateTime) throws ParseException {
String dateTimeString = DateUtils.dateFormat(dateTime, DateUtils.DATE_TIME_PATTERN);
return dateTimeString.substring(0, 10);
}
/**
* 当时、分、秒为00:00:00时,将日期时间格式成只有日期的字符串,
* 当时、分、秒不为00:00:00时,直接返回
*
* @param dateTime Date
* @return
* @throws ParseException
*/
public static String dateTimeToDateStringIfTimeEndZero(Date dateTime) throws ParseException {
String dateTimeString = DateUtils.dateFormat(dateTime, DateUtils.DATE_TIME_PATTERN);
if (dateTimeString.endsWith("00:00:00")) {
return dateTimeString.substring(0, 10);
} else {
return dateTimeString;
}
}
/**
* 将日期时间格式成日期对象,和dateParse互用
*
* @param dateTime Date
* @return Date
* @throws ParseException
*/
public static Date dateTimeToDate(Date dateTime) throws ParseException {
Calendar cal = Calendar.getInstance();
cal.setTime(dateTime);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
/**
* 时间加减小时
*
* @param startDate 要处理的时间,Null则为当前时间
* @param hours 加减的小时
* @return Date
*/
public static Date dateAddHours(Date startDate, int hours) {
if (startDate == null) {
startDate = new Date();
}
Calendar c = Calendar.getInstance();
c.setTime(startDate);
c.set(Calendar.HOUR, c.get(Calendar.HOUR) + hours);
return c.getTime();
}
/**
* 时间加减分钟
*
* @param startDate 要处理的时间,Null则为当前时间
* @param minutes 加减的分钟
* @return
*/
public static Date dateAddMinutes(Date startDate, int minutes) {
if (startDate == null) {
startDate = new Date();
}
Calendar c = Calendar.getInstance();
c.setTime(startDate);
c.set(Calendar.MINUTE, c.get(Calendar.MINUTE) + minutes);
return c.getTime();
}
/**
* 时间加减秒数
*
* @param startDate 要处理的时间,Null则为当前时间
* @param seconds 加减的秒数
* @return
*/
public static Date dateAddSeconds(Date startDate, int seconds) {
if (startDate == null) {
startDate = new Date();
}
Calendar c = Calendar.getInstance();
c.setTime(startDate);
c.set(Calendar.SECOND, c.get(Calendar.SECOND) + seconds);
return c.getTime();
}
/**
* 时间加减天数
*
* @param startDate 要处理的时间,Null则为当前时间
* @param days 加减的天数
* @return Date
*/
public static Date dateAddDays(Date startDate, int days) {
if (startDate == null) {
startDate = new Date();
}
Calendar c = Calendar.getInstance();
c.setTime(startDate);
c.set(Calendar.DATE, c.get(Calendar.DATE) + days);
return c.getTime();
}
/**
* 时间加减月数
*
* @param startDate 要处理的时间,Null则为当前时间
* @param months 加减的月数
* @return Date
*/
public static Date dateAddMonths(Date startDate, int months) {
if (startDate == null) {
startDate = new Date();
}
Calendar c = Calendar.getInstance();
c.setTime(startDate);
c.set(Calendar.MONTH, c.get(Calendar.MONTH) + months);
return c.getTime();
}
/**
* 时间加减年数
*
* @param startDate 要处理的时间,Null则为当前时间
* @param years 加减的年数
* @return Date
*/
public static Date dateAddYears(Date startDate, int years) {
if (startDate == null) {
startDate = new Date();
}
Calendar c = Calendar.getInst
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 基于java+SSM小说阅读网站的设计与实现-毕业设计源码+数据库+使用文档(高分优秀项目).zip基于java+SSM小说阅读网站的设计与实现-毕业设计源码+数据库+使用文档(高分优秀项目).zip基于java+SSM小说阅读网站的设计与实现-毕业设计源码+数据库+使用文档(高分优秀项目).zip 【备注】 1、该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过mac/window10/11测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于java+SSM小说阅读网站的设计与实现-毕业设计源码+数据库+使用文档(高分优秀项目).zip (865个子文件)
NovelManagerController.class 10KB
UserController.class 10KB
DateUtils.class 10KB
HttpClientUtils.class 8KB
BannerManagerController.class 7KB
NovelController.class 6KB
JSONUtils.class 5KB
ChapterController.class 5KB
Page.class 5KB
NoticeManagerController.class 5KB
ChapterManagerController.class 5KB
UserManagerController.class 5KB
JsoupHelper.class 5KB
PropertiesLoader.class 4KB
AdminManagerController.class 4KB
NovelManagerController$1.class 4KB
Novel.class 4KB
IndexController.class 4KB
ChapterServiceImpl.class 4KB
LoginController.class 3KB
TypeManagerController.class 3KB
AdminController.class 3KB
CommentManagerController.class 3KB
LoginInterceptor.class 3KB
CommentController.class 3KB
FileUtils.class 3KB
NovelServiceImpl.class 3KB
RecomsServiceImpl.class 2KB
FavorsServiceImpl.class 2KB
User.class 2KB
NovelSpider.class 2KB
Chapter.class 2KB
CaptchaController.class 2KB
HtmlUtils.class 2KB
StringUtils.class 2KB
PageQuery.class 2KB
NoticeController.class 2KB
FavorsController.class 2KB
RecomsController.class 2KB
Banner.class 2KB
ShelfController.class 2KB
ShelfServiceImpl.class 2KB
AdminServiceImpl.class 2KB
UserServiceImpl.class 2KB
MD5.class 2KB
MybatisGeneator.class 2KB
CommentServiceImpl.class 2KB
NoticeServiceImpl.class 2KB
Notice.class 2KB
BannerServiceImpl.class 2KB
TypeServiceImpl.class 2KB
IPUtils.class 2KB
Progress.class 2KB
Admin.class 2KB
Comment.class 2KB
NovelVo.class 1KB
ProgressServiceImpl.class 1KB
BaseController.class 1KB
Type.class 1KB
Recoms.class 1KB
Favors.class 1KB
Shelf.class 1KB
Global.class 1KB
ChapterMapper.class 1KB
R.class 1KB
ProgressVo.class 889B
ShelfVo.class 877B
CommentVo.class 867B
NovelMapper.class 846B
ChapterService.class 817B
NovelService.class 726B
UUIDUtils.class 668B
AdminMapper.class 663B
UserMapper.class 657B
NoticeMapper.class 631B
CommentMapper.class 594B
BannerMapper.class 593B
FavorsMapper.class 589B
RecomsMapper.class 589B
ChapterVo.class 587B
ShelfMapper.class 584B
TypeMapper.class 583B
FavorsVo.class 583B
RecomsVo.class 583B
AdminService.class 535B
UserService.class 529B
ProgressMapper.class 473B
CommentService.class 466B
BannerService.class 465B
NoticeService.class 465B
TypeService.class 455B
RecomsService.class 444B
FavorsService.class 444B
ShelfService.class 441B
Consts.class 317B
ProgressService.class 285B
App.class 274B
App.class 264B
.classpath 889B
org.eclipse.wst.common.component 547B
共 865 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
不走小道
- 粉丝: 3210
- 资源: 5120
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功