DateUtils

简介:  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);
 }
}

目录
相关文章
|
IDE Java 开发工具
导入jar包后无法找到`com.aliyun.teaopenapi.models.Config`这个类
导入jar包后无法找到`com.aliyun.teaopenapi.models.Config`这个类
1692 3
|
消息中间件 监控 Java
接口请求重试策略:保障稳定性的必杀技
接口请求重试策略:保障稳定性的必杀技
700 0
关于fastapi异步接口卡死的坑及解决
开发任务是使用fastapi去写一个对工业设备(PLC)的通信接口,方便其他后端服务与设备对接,将设备的功能抽象出来供MES调用。 通信协议是使用modbus TCP,由于fastapi是异步框架,很多以前在同步函数里开发的代码移植过来发现出现了异常,这也是不断踩坑的过程,问题解决之后也能体会到异步框架的优美与高效。
|
11月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
294 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
10月前
|
测试技术 开发者 UED
探索软件测试的深度:从单元测试到自动化测试
【10月更文挑战第30天】在软件开发的世界中,测试是确保产品质量和用户满意度的关键步骤。本文将深入探讨软件测试的不同层次,从基本的单元测试到复杂的自动化测试,揭示它们如何共同构建一个坚实的质量保证体系。我们将通过实际代码示例,展示如何在开发过程中实施有效的测试策略,以确保软件的稳定性和可靠性。无论你是新手还是经验丰富的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
消息中间件 NoSQL 数据处理
如何进行实时数据处理:技术深度剖析
【8月更文挑战第25天】实时数据处理是现代企业不可或缺的能力之一,它要求系统具备高吞吐量、低延迟、高可用性和可扩展性。通过合理的架构设计、技术选型和持续优化,可以构建出满足业务需求的实时数据处理系统。未来,随着技术的不断进步和应用场景的不断拓展,实时数据处理将在更多领域发挥重要作用。
|
12月前
|
测试技术 数据库连接 数据库
提升软件测试效率与灵活性:探索Mock测试的重要性
【9月更文挑战第20天】在软件测试领域,提升测试效率与灵活性至关重要。Mock 测试通过模拟外部组件,使模块能独立测试,缩短测试周期;快速反馈机制让测试结果即时可见,加速问题修复;还能模拟异常情况和进行参数化测试,增强测试全面性与灵活性,从而显著提高软件质量和开发效率。
159 9
|
关系型数据库 MySQL 数据库
Docker 安装 MySQL
一、查看 MySQL 版本 访问 MySQL 镜像库地址:https://hub.docker.com/_/mysql?tab=tags 。 可以通过 Tags 查看其他版本的 MySQL,默认是最新版本 mysql:latest 。 你也可以在下拉列表中找到其他你想要的版本: 二、拉取 MySQL 镜像 拉取官方的最新版本的镜像: docker pull mysql:latest 三、查看本地镜像 使用以下命令来查看是否已安装了 mysql: docker images 四、运行容器 安装完成后,我们可以使用以下命令来运行 mysql 容器: docker run -itd --name m
1707 0
|
运维 关系型数据库 MySQL
面试题MySQL问题之MySQL集群的单点失效如何解决
面试题MySQL问题之MySQL集群的单点失效如何解决
206 2
|
监控 搜索推荐 数据挖掘
Flink流处理与批处理大揭秘:实时与离线,一文让你彻底解锁!
【8月更文挑战第24天】Apache Flink 是一款开源框架,擅长流处理与批处理。流处理专攻实时数据流,支持无限数据流及事件驱动应用,实现数据的连续输入与实时处理。批处理则聚焦于静态数据集,进行一次性处理。两者差异体现在处理方式与应用场景:流处理适合实时性要求高的场景(例如实时监控),而批处理更适用于离线数据分析任务(如数据挖掘)。通过提供的示例代码,读者可以直观理解两种模式的不同之处及其实际应用。
1057 0