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
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于ssm+mysql牛码小说网源码数据库.zip (2000个子文件)
debug.log.20181002 0B
debug.log.20181004 45KB
NovelManagerController.class 10KB
NovelManagerController.class 10KB
NovelManagerController.class 10KB
UserController.class 10KB
UserController.class 10KB
UserController.class 10KB
DateUtils.class 10KB
DateUtils.class 10KB
DateUtils.class 10KB
HttpClientUtils.class 8KB
HttpClientUtils.class 8KB
BannerManagerController.class 7KB
BannerManagerController.class 7KB
BannerManagerController.class 7KB
NovelController.class 6KB
NovelController.class 6KB
NovelController.class 6KB
JSONUtils.class 5KB
JSONUtils.class 5KB
ChapterController.class 5KB
ChapterController.class 5KB
ChapterController.class 5KB
Page.class 5KB
Page.class 5KB
NoticeManagerController.class 5KB
NoticeManagerController.class 5KB
NoticeManagerController.class 5KB
ChapterManagerController.class 5KB
ChapterManagerController.class 5KB
ChapterManagerController.class 5KB
UserManagerController.class 5KB
UserManagerController.class 5KB
UserManagerController.class 5KB
JsoupHelper.class 5KB
JsoupHelper.class 5KB
PropertiesLoader.class 4KB
PropertiesLoader.class 4KB
AdminManagerController.class 4KB
AdminManagerController.class 4KB
AdminManagerController.class 4KB
NovelManagerController$1.class 4KB
NovelManagerController$1.class 4KB
NovelManagerController$1.class 4KB
Novel.class 4KB
Novel.class 4KB
IndexController.class 4KB
IndexController.class 4KB
IndexController.class 4KB
ChapterServiceImpl.class 4KB
ChapterServiceImpl.class 4KB
LoginController.class 3KB
LoginController.class 3KB
LoginController.class 3KB
TypeManagerController.class 3KB
TypeManagerController.class 3KB
TypeManagerController.class 3KB
AdminController.class 3KB
AdminController.class 3KB
AdminController.class 3KB
CommentManagerController.class 3KB
CommentManagerController.class 3KB
CommentManagerController.class 3KB
LoginInterceptor.class 3KB
LoginInterceptor.class 3KB
FileUtils.class 3KB
FileUtils.class 3KB
CommentController.class 3KB
CommentController.class 3KB
CommentController.class 3KB
FileUtils.class 3KB
NovelServiceImpl.class 3KB
NovelServiceImpl.class 3KB
RecomsServiceImpl.class 2KB
RecomsServiceImpl.class 2KB
FavorsServiceImpl.class 2KB
FavorsServiceImpl.class 2KB
User.class 2KB
User.class 2KB
NovelSpider.class 2KB
NovelSpider.class 2KB
NovelSpider.class 2KB
StringUtils.class 2KB
StringUtils.class 2KB
CaptchaController.class 2KB
CaptchaController.class 2KB
CaptchaController.class 2KB
HtmlUtils.class 2KB
HtmlUtils.class 2KB
PageQuery.class 2KB
PageQuery.class 2KB
NoticeController.class 2KB
NoticeController.class 2KB
NoticeController.class 2KB
Chapter.class 2KB
Chapter.class 2KB
Banner.class 2KB
Banner.class 2KB
FavorsController.class 2KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
入伍击寇
- 粉丝: 130
- 资源: 4704
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- anaconda安装Web-ma笔记
- 酷狗top500数据分析完整
- 天气数据爬虫以及可视化分析
- unity shadergraph 特效案例del-for-network-ids-mas开发笔记
- 用户空间操作I2C适配器从而与I2C设备通信
- 2_base.apk.1.1
- 32位alu设计实验logisim-ma开发笔记
- Tangram-ES 0.17.1 64位 Debug/Release版 基于OpenGL地图渲染引擎
- 2018 各系统CNC 数据采集方法-5718b19bb868a98271fe910ef12d2af90342a827.pdf
- 【知识付费小程序源码】可开激励广告流量主+虚拟资源变现+搭建教程.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功