DateUtils

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介:  package cn.com.css.common.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar;


package cn.com.css.common.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * 用于处理JAVA中的DATE型数据的转换
 *
 * @version 1.0
 */
public class DateUtil {

 private static Log log = LogFactory.getLog(DateUtil.class);

 private static String datePattern = "yyyy-MM-dd";

 private static String timePattern = "HH:mm:ss";

 /**
  * Return 缺省的日期格式 (yyyy-MM-dd)
  *
  * @return 在页面中显示的日期格式
  */
 public static String getDatePattern() {
  return datePattern;
 }

 /**
  * Return 缺省的时间格式 (HH:mm:ss)
  *
  * @return 在页面中显示的日期格式
  */
 public static final String getTimePattern() {
  return timePattern;
 }

 /**
  * Return 缺省的日期+时间格式 (yyyy-MM-dd HH:mm:ss)
  *
  * @return 在页面中显示的日期格式
  */
 public static final String getDateTimePattern() {
  return datePattern + " " + timePattern;
 }

 /**
  * 按照日期格式,将字符串解析为日期对象
  *
  * @param aMask
  *            输入字符串的格式
  * @param strDate
  *            按aMask格式排列的日期的字符串描述
  * @return Date 对象
  *
  * @throws ParseException
  */
 public static final Date convertStringToDate(String aMask, String strDate) {
  SimpleDateFormat df = null;
  Date chgDate = null;
  try {
   df = new SimpleDateFormat(aMask);
   chgDate = df.parse(strDate);
  } catch (ParseException pe) {
   log.error("from string convert to date is error :"
     + pe.getMessage());
  }
  return chgDate;
 }

 /**
  * 按照日期格式,将字符串解析为日期对象.格式'yyyy-mm-dd HH:mm:ss'
  *
  * @param strDate
  *            按aMask格式排列的日期的字符串描述
  * @return Date 对象
  */
 public static final Date convertStringToDate(String strDate) {
  return convertStringToDate(getDateTimePattern(), strDate);
 }

 /**
  * 按照日期格式,将日期对象解析为字符串
  *
  * @param aMask
  *            输入字符串的格式
  * @param aDate
  *            按aMask格式排列的日期对象
  * @return String 字符串
  *
  * @throws ParseException
  */
 public static String convertDateToString(String aMask, Date aDate) {
  SimpleDateFormat df = null;
  try {
   df = new SimpleDateFormat(aMask);
  } catch (Exception ex) {
   log.error("from date convert to string is error :"
     + ex.getMessage());
  }
  return df.format(aDate);
 }

 /**
  * 按照日期格式,将日期对象解析为字符串.格式'yyyy-mm-dd HH:mm:ss'
  *
  * @param strDate
  *            按aMask格式排列的日期的字符串描述
  * @return Date 对象
  */
 public static final String convertDateToString(Date aDate) {
  return convertDateToString(getDateTimePattern(), aDate);
 }

 /**
  * 返回当前日期
  *
  * @param aMask
  *            日期格式
  *
  * @return
  */
 public static String getLocalDateTime(String aMask) {
  SimpleDateFormat df = new SimpleDateFormat(aMask);
  String returnValue = df.format(new Date());
  return returnValue;
 }

 /**
  * 返回当前日期,格式'yyyy-mm-dd'
  *
  * @return
  */
 public static String getLocalDate() {
  return getLocalDateTime(getDatePattern());
 }

 /**
  * 返回当前时间,格式'yyyy-mm-dd HH:mm:ss'
  *
  * @return
  */
 public static final String getLocalDateTime() {
  return getLocalDateTime(getDateTimePattern());
 }

 /**
  * 返回当前日期
  *
  * @param aMask
  *            日期格式
  *
  * @return
  */
 public static Date loadLocalDateTime(String aMask) {
  return convertStringToDate(aMask, getLocalDateTime(aMask));
 }

 /**
  * 返回当前日期,格式'yyyy-mm-dd'
  *
  * @return
  */
 public static Date loadLocalDate() {
  return loadLocalDateTime(getDatePattern());
 }

 /**
  * 返回当前时间,格式'yyyy-mm-dd HH:mm:ss'
  *
  * @return
  */
 public static final Date loadLocalDateTime() {
  return loadLocalDateTime(getDateTimePattern());
 }

 /**
  * 得到日历对象Calendar,格式:yyyy-MM-dd
  *
  * @return the current date
  * @throws ParseException
  */
 public static Calendar getCalendar() throws ParseException {
  Date today = new Date();
  SimpleDateFormat df = new SimpleDateFormat(datePattern);
  String todayAsString = df.format(today);
  Calendar cal = new GregorianCalendar();
  cal.setTime(convertStringToDate(getDatePattern(), todayAsString));
  return cal;
 }

 public static String getYear() {
  Date date = new Date();
  return convertDateToString("yyyy", date);
 }

 public static String getMonth() {
  Date date = new Date();
  return convertDateToString("MM", date);
 }

 public static String getDay() {
  Date date = new Date();
  return convertDateToString("dd", date);
 }

 /**
  * 日期增大
  *
  * @param date
  *            Date
  * @param field
  *            int 1年 2月 3周 5天
  * @param amount
  *            int 增加数量
  * @return Date
  */
 public static Date addDate(Date date, int field, int amount) {
  GregorianCalendar gc = new GregorianCalendar();
  gc.setTime(date);
  gc.add(field, amount);
  return gc.getTime();
 }

 /**
  * 得到Calendar的TimeInMilli
  *
  * @param date
  * @return
  */
 public static long getMillis(Date date) {
  if (date != null) {
   Calendar c = Calendar.getInstance();
   c.setTime(date);
   return c.getTimeInMillis();
  } else {
   return 0;
  }
 }

 /**
  * 日期相减
  *
  * @param date
  *            Date
  * @param day
  *            int
  * @return Date
  */
 public static Date diffDate(Date date, int day) {
  if (date != null) {
   Calendar c = Calendar.getInstance();
   long iLong = getMillis(date) - ((long) day) * 24 * 3600 * 1000;
   c.setTimeInMillis(iLong);
   return c.getTime();
  } else {
   return new Date();
  }
 }

 /**
  * 得到一年当中的星期
  *
  * @param date
  * @return
  */
 public static String getWeekOfYearByString(Date date) {
  if (date != null) {
   Calendar c = new GregorianCalendar();
   c.setFirstDayOfWeek(Calendar.MONDAY);
   c.setMinimalDaysInFirstWeek(7);
   c.setTime(date);
   int week = c.get(Calendar.WEEK_OF_YEAR);
   if (week > 9) {
    return convertDateToString("yyyy", date) + week;
   } else {
    return convertDateToString("yyyy", date) + "0" + week;
   }
  } else {
   return null;
  }
 }

 /**
  * 获取某月的第一天,或最后一天
  *
  * @param date
  *            Date
  * @param flag
  *            boolean true为第一天 false为最后一天
  * @return String
  */
 public static final String getDateByMonth(Date date, boolean flag) {
  Calendar cal = Calendar.getInstance();
  cal.setTime(date);
  int i = 0;
  if (flag) {
   i = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
  } else {
   i = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
  }
  if (i > 9) {
   return i + "";
  } else {
   return "0" + i;
  }
 }

 /**
  * 获取某周的第一天,或最后一天
  *
  * @param year
  *            int
  * @param week
  *            int
  * @param flag
  *            boolean true为第一天 false为最后一天
  * @return Date
  */
 public static Date getDateByWeek(int year, int week, boolean flag) {
  Calendar calendar = Calendar.getInstance();
  calendar.set(Calendar.YEAR, year);
  calendar.set(Calendar.WEEK_OF_YEAR, week);
  calendar.set(Calendar.DAY_OF_WEEK, 7);
  // 得到今天是星期几,星期日为1
  int datInWeek = calendar.get(Calendar.DAY_OF_WEEK);
  System.out.println(datInWeek);
  // Clone一个新的
  Calendar calendar1 = (Calendar) calendar.clone();
  if (flag) {
   calendar.add(Calendar.DAY_OF_MONTH, -(datInWeek - 2));
   return calendar.getTime();
  } else {
   calendar1.add(Calendar.DAY_OF_MONTH, 7 - datInWeek);
   return addDate(calendar.getTime(), 5, 1);
  }
 }

 /**
  * 日期计算
  *
  * @param date
  *            起始日期
  * @param yearNum
  *            年增减数
  * @param monthNum
  *            月增减数
  * @param dateNum
  *            日增减数
  */
 public static String calDate(String date, int yearNum, int monthNum,
   int dateNum) {
  String result = "";
  try {
   SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
   Calendar cal = Calendar.getInstance();
   cal.setTime(sd.parse(date));
   cal.add(Calendar.MONTH, monthNum);
   cal.add(Calendar.YEAR, yearNum);
   cal.add(Calendar.DATE, dateNum);
   result = sd.format(cal.getTime());
  } catch (Exception e) {
   e.printStackTrace();
  }
  return result;
 }

 /**
  * 得到系统时间数字:1260168985734
  *
  * @return
  */
 public static long getLongTime() {
  return System.currentTimeMillis();
 }

 /**
  * 得到系统时间数字:1260168985734
  *
  * @return
  */
 public static String getLongDate() {
  long d = System.currentTimeMillis();
  return String.valueOf(d);
 }

 /**
  * 当天开始时间
  *
  * @return
  * @attention
  * @author 涂作权
  * @date 2013-10-13
  * @note begin modify by 涂作权 2013-10-13 获得一天的开始时间
  */
 public static Date getStartTimeOfDay() {
  Calendar calendar = new GregorianCalendar();
  calendar.set(Calendar.HOUR_OF_DAY, 0);
  calendar.set(Calendar.MINUTE, 0);
  calendar.set(Calendar.SECOND, 0);
  calendar.set(Calendar.MILLISECOND, 0);
  return calendar.getTime();
 }

 /**
  * 当天的结束时间
  *
  * @return
  * @attention
  * @author 涂作权
  * @date 2013-10-13
  * @note begin modify by 涂作权 2013-10-13 添加一天的最后时间
  */
 public static Date getEndTimeOfDay() {
  Calendar calendar = new GregorianCalendar();
  calendar.set(Calendar.HOUR_OF_DAY, 23);
  calendar.set(Calendar.MINUTE, 59);
  calendar.set(Calendar.SECOND, 59);
  calendar.set(Calendar.MILLISECOND, 999);
  return calendar.getTime();
 }

 /**
  * \brief 将long的数据变成Date类型,进而变成String类型
  *
  * @param dateFormat 日期格式
  * @param millSec 毫秒值
  * @return
  * @attention
  * @author 涂作权
  * @date 2014-2-21
  * @note begin modify by null
  */
 public static String transferLongToDate(String dateFormat, long millSec) {
  SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
  Date date = new Date(millSec);
  return sf.format(date);
 }
}

目录
相关文章
|
缓存 前端开发 Java
SpringBoot&SpringMVC统一异常处理之RestControllerAdvice
SpringBoot&SpringMVC统一异常处理之RestControllerAdvice
132 0
|
4月前
|
网络协议 Go
关于fastapi异步接口卡死的坑及解决
开发任务是使用fastapi去写一个对工业设备(PLC)的通信接口,方便其他后端服务与设备对接,将设备的功能抽象出来供MES调用。 通信协议是使用modbus TCP,由于fastapi是异步框架,很多以前在同步函数里开发的代码移植过来发现出现了异常,这也是不断踩坑的过程,问题解决之后也能体会到异步框架的优美与高效。
|
4月前
|
消息中间件 NoSQL 数据处理
如何进行实时数据处理:技术深度剖析
【8月更文挑战第25天】实时数据处理是现代企业不可或缺的能力之一,它要求系统具备高吞吐量、低延迟、高可用性和可扩展性。通过合理的架构设计、技术选型和持续优化,可以构建出满足业务需求的实时数据处理系统。未来,随着技术的不断进步和应用场景的不断拓展,实时数据处理将在更多领域发挥重要作用。
|
7月前
|
消息中间件 监控 Java
接口请求重试策略:保障稳定性的必杀技
接口请求重试策略:保障稳定性的必杀技
368 0
|
4月前
|
监控 搜索推荐 数据挖掘
Flink流处理与批处理大揭秘:实时与离线,一文让你彻底解锁!
【8月更文挑战第24天】Apache Flink 是一款开源框架,擅长流处理与批处理。流处理专攻实时数据流,支持无限数据流及事件驱动应用,实现数据的连续输入与实时处理。批处理则聚焦于静态数据集,进行一次性处理。两者差异体现在处理方式与应用场景:流处理适合实时性要求高的场景(例如实时监控),而批处理更适用于离线数据分析任务(如数据挖掘)。通过提供的示例代码,读者可以直观理解两种模式的不同之处及其实际应用。
282 0
|
7月前
|
测试技术 Python
多种方法实现Appium屏幕滑动:让用户仿真动作更简单
本文介绍了Appium在移动端自动化测试中如何模拟用户滑动操作。滑动常见于触摸事件模拟,坐标计算和惯性滑动场景。Appium提供了`swipe`和`scroll`两种方法:`swipe`需要指定起始和结束坐标及可选的持续时间;`scroll`则直接使用起始和结束元素进行滑动。文中给出了Python示例代码,展示了如何在不同场景下执行滑动操作。
|
7月前
|
测试技术 API 开发工具
📑教你如何编写一份 API 文档
API 文档是开发者理解和使用API的关键,它提供详细的说明、代码示例和调用过程,帮助创建无缝集成。好的API文档能提升开发人员体验,减少上手时间和维护成本,同时促进产品迭代。API有面向团队、合作伙伴和最终用户三种类型。编写文档时要考虑受众,提供清晰的概述、教程、认证信息、端点定义、状态码和错误码示例。维护更新与API同步的文档至关重要,遵循通俗语言、参考文档、示例和专人负责等最佳实践,确保全面性。GitHub、Twilio和Dropbox的API文档是良好示例。
|
7月前
|
测试技术
Could not proxy command to the remote server. Original error: timeout of 240000ms exceeded 的解决办法
Could not proxy command to the remote server. Original error: timeout of 240000ms exceeded 的解决办法
251 0
|
存储 安全
cookie、 localStorage的区别和特点
cookie、 localStorage的区别和特点
396 0
|
Java 数据库连接
JBPM学习(一):实现一个简单的工作流例子全过程
本文主要讲实现一个简单的工作流例子全过程
383 0
JBPM学习(一):实现一个简单的工作流例子全过程