package com.sicdt.library.core.utils;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map; import org.apache.commons.lang3.StringUtils; /**
*
* <br>类 名: DateTimeUtil
* <br>描 述: 日期时间工具类
* <br>作 者: shizhenwei
* <br>创 建: 2017年5月15日
* <br>版 本: v0.0.2
* <br>
* <br>历 史: (版本) 作者 时间 注释
*/
public class DateTimeUtil {
public static final String DIVIDE_LINE = "-";
public static final String DIVIDE_COLON = ":"; public static final long SECOND = 1000;
public static final long MINUTE = 60 * SECOND;
public static final long HOUR = 60 * MINUTE;
public static final long DAY = 24 * HOUR;
public static final long WEEK = 7 * DAY;
public static final String YEARFORMAT = "yyyy";
public static final String MONTHFORMAT = "yyyy-MM";
public static final String SHORTFORMAT = "yyyy-MM-dd";
public static final String SHORTFORMATNOSPIT = "yyyyMMdd";
public static final String LONGFORMATNOSPIT = "yyyyMMddHHmmss";
public static final String LONGFORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String SUPERLONGFORMAT = "yyyy-MM-dd HH:mm:ss sss";
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static final int FIELD_YEAR = Calendar.YEAR;
public static final int FIELD_MONTH = Calendar.MONTH;
public static final int FIELD_DATE = Calendar.DATE; /**
* 时间戳格式化 yyyy-MM-dd HH:mm:ss
*/
public static String getTimestampString(java.util.Date date) {
return sdf.format(date).toString();
} /**
* 系统当前时间戳
*/
public static Timestamp getTimestamp(){
java.text.SimpleDateFormat myFormat = new SimpleDateFormat(LONGFORMAT);
long stamp = System.currentTimeMillis();
String timestamp = myFormat.format(stamp);
return Timestamp.valueOf(timestamp);
} /**
* 日期转时间戳
*/
public static Timestamp getTimestamp(java.util.Date date) {
return Timestamp.valueOf(getTimestampString(date));
} /**
* 字符串转时间戳
*/
public static Timestamp getTimestamp(String timestamp) {
if(StringUtils.isEmpty(timestamp)){
return null;
}
return Timestamp.valueOf(timestamp);
} /**
* 时间格式化 yyyy-MM-dd
*/
public static String getDate() {
java.text.SimpleDateFormat myFormat = new SimpleDateFormat(SHORTFORMAT);
return myFormat.format(System.currentTimeMillis());
} /**
* 时间格式化 yyyy-MM-dd
*/
public static String getDate(java.util.Date date) {
return getDate(date, SHORTFORMAT);
} /**
* 时间格式化 yyyy-MM-dd
*/
public static String getDate(java.util.Date date, String format) {
String result = null;
try {
java.text.SimpleDateFormat myFormat = new SimpleDateFormat(format);
result = myFormat.format(date);
} catch (Exception e) {
return null;
}
return result;
} /**
* 时间格式化 yyyy-MM-dd HH:mm:ss
* */
public static String getDateTime() {
return getDateTime(new java.util.Date());
} /**
* 时间格式化 yyyy-MM-dd HH:mm:ss
* */
public static String getDateTime(java.util.Date date) {
java.text.SimpleDateFormat d = new java.text.SimpleDateFormat(LONGFORMAT);
return d.format(date);
} /**
* 时间格式化 yyyy-MM-dd
* */
public static String getShortDate(java.util.Date date){
if(date==null)
date = new java.util.Date();
return getDate(date, SHORTFORMAT);
} /**
* 时间格式化 yyyy-MM-dd HH:mm:ss
* */
public static String getLongDate(java.util.Date date){
if(date==null)
date = new java.util.Date();
return getDateTime(date);
} /**
* 时间格式化 yyyy-MM-dd HH:mm:ss
* */
public static String getTimestampStr(){
java.text.SimpleDateFormat myFormat = new SimpleDateFormat(LONGFORMAT);
return myFormat.format(System.currentTimeMillis());
} /**
* 时间格式化 yyyyMMddHHmmss
* */
public static String getLongTime(){
java.text.SimpleDateFormat myFormat = new SimpleDateFormat(LONGFORMATNOSPIT);
return myFormat.format(System.currentTimeMillis());
} /**
* 时间格式化 yyyyMMddHHmmss
* */
public static String getLongTime(long ts){
java.text.SimpleDateFormat myFormat = new SimpleDateFormat(LONGFORMATNOSPIT);
return myFormat.format(ts);
} /**
* 时间戳TS
*/
public static String getTS(){
long ts = System.currentTimeMillis();
return Long.toString(ts);
} /**
* N年后
* */
public static java.util.Date addYear(java.util.Date date, int amount) {
return add(date, Calendar.YEAR, amount);
} /**
* N个月后
* */
public static java.util.Date addMonth(java.util.Date date, int amount) {
return add(date, Calendar.MONTH, amount);
} /**
* N天后
* */
public static java.util.Date addDay(java.util.Date date, int amount) {
return add(date, Calendar.DATE, amount);
} /**
* N(年、月、天)后
* */
public static java.util.Date add(java.util.Date date, int field, int amount) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(field, amount);
return calendar.getTime();
} /**
* N(年、月、天)后
* */
public static java.util.Date add(String datestr, int field, int amount) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(formatDate(datestr));
calendar.add(field, amount);
return calendar.getTime();
} /**
* N(年、月、天)后(字符串形式)
* */
public static String add(String datestr, int field, int amount, String format) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(formatDate(datestr,format));
calendar.add(field, amount);
return getDate(calendar.getTime(), format);
} /***
* 获取当前时间,不含日期
* @return
*/
public static String getCurrentTime(){
SimpleDateFormat sdf = new SimpleDateFormat("kk:mm:ss");
String time = sdf.format(Calendar.getInstance().getTime());
return time;
} /**
* 将字符串转为为日期
*/
public static java.util.Date formatDate(String datestr) {
if(19==datestr.length()){
return formatDate(datestr, LONGFORMAT);
}else{
return formatDate(datestr, SHORTFORMAT);
}
} /**
* 将字符串转为为日期
*/
public static java.util.Date formatDate(String datestr, String format) {
try {
if(StringUtils.isEmpty(datestr)){
return null;
}
java.text.SimpleDateFormat myFormat = new SimpleDateFormat(format);
Date date = myFormat.parse(datestr);
return date;
} catch (Exception e) {
return null;
}
} /***
* 月份的开始结束日期
* @param year
* @param month
* @param keys
* @return
*/
public static Map<String, String> getMonthStartDateAndEndDate(int year, int month,
String... keys) {
SimpleDateFormat d = new SimpleDateFormat(LONGFORMAT);
Map<String, String> date = new HashMap<String, String>();
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month - 1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
date.put(keys[0], d.format(calendar.getTime()));
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.DAY_OF_MONTH, -1);
date.put(keys[1], d.format(calendar.getTime()));
return date;
} /**
* 时间格式化
*/
public static String getTimeString(String time) {
String[] ti = time.split(":");
if (ti[1].length() == 1) {
time = ti[0] + "0" + ti[1];
} else {
time = ti[0] + ti[1];
}
return time;
} /**
* <br>描 述: 获取计费模式的年月 2017-06-26 至 2017-07-25 为 2017年07月 以此类推
* <br>作 者: shizhenwei
* <br>历 史: (版本) 作者 时间 注释
* @param 2017-06-19/2016-06-19 15:35:35
* @return
*/
public static String getSicdtYearMonth(String datestr){
String[] fileds = datestr.split(DIVIDE_LINE);
if(Integer.valueOf(fileds[2])>25){
Date date = add(datestr, FIELD_MONTH, 1);
return getDate(date, MONTHFORMAT);
}
return datestr.substring(0, 7);
} public static String getSicdtYearMonth(){
return getSicdtYearMonth(getDate());
} @SuppressWarnings("deprecation")
public static String timeString() {
Date date = new Date();
return getTimeString(date.getHours() + ":" + date.getMinutes());
} /**
* 月-天数
* */
public static int getDayNum(int year, int month) {
if (month == 2) {
return year % 400 != 0 && (year % 4 != 0 || year % 100 == 0) ? 28
: 29;
}
String SmallMonth = ",4,6,9,11,";
return SmallMonth.indexOf(String.valueOf(String
.valueOf((new StringBuffer(",")).append(String.valueOf(month))
.append(",")))) < 0 ? 31 : 30;
}
/***
* 两个日期之间的天数
* @param date1
* @param date2
* @return
*/
public static int DateDiff(Date date1, Date date2) {
int i = (int) ((date1.getTime() - date2.getTime()) / 3600 / 24 / 1000);
return i;
}
/**
* 日期拆分,取年或月或日 Y-年 M-月 D-日
* @param strDate
* @param style
* @return
*/
public static int getYearMonthDate(String strDate, String style) {
int year;
int month;
int day;
int firstDash;
int secondDash;
if (strDate == null) {
return 0;
}
firstDash = strDate.indexOf('-');
secondDash = strDate.indexOf('-', firstDash + 1);
if ((firstDash > 0) & (secondDash > 0)
& (secondDash < strDate.length() - 1)) {
year = Integer.parseInt(strDate.substring(0, firstDash));
month = Integer.parseInt(strDate.substring(firstDash + 1,
secondDash));
day = Integer.parseInt(strDate.substring(secondDash + 1));
} else {
return 0;
}
if (style.equalsIgnoreCase("Y")) {
return year;
} else if (style.equalsIgnoreCase("M")) {
return month;
} else if (style.equalsIgnoreCase("D")) {
return day;
} else {
return 0;
}
} /***
* 是否是年份的第一天
* @param date
* @return
*/
public static boolean isYearFirstDay(java.sql.Date date) {
boolean i = false;
if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 1)
&& (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 1)) {
i = true;
}
return i;
}
/**
* 是否是半年的第一天
* @param date
* @return
*/
public static boolean isHalfYearFirstDay(java.sql.Date date) {
boolean i = false;
if (((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 1) && (DateTimeUtil
.getYearMonthDate(date.toString(), "D") == 1))
|| ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 7) && (DateTimeUtil
.getYearMonthDate(date.toString(), "D") == 1))) {
i = true;
}
return i;
}
/**
* 取半年的第一天
* @param date
* @return
*/
public static String getHalfYearFirstDay(java.sql.Date date) {
String month = "01";
if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 7) {
month = "07";
}
String day = Integer.toString(DateTimeUtil.getYearMonthDate(
date.toString(), "Y")) + "-" + month + "-01";
return day;
}
/**
* 是否是半年最后一天
* */
public static boolean isHalfYearLastDay(java.sql.Date date) {
boolean i = false;
if (((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 12) && (DateTimeUtil
.getYearMonthDate(date.toString(), "D") == 31))
|| ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 6) && (DateTimeUtil
.getYearMonthDate(date.toString(), "D") == 30))) {
i = true;
}
return i;
}
/***
* 取半年最后一天
* @param date
* @return
*/
public static String getHalfYearLastDay(java.sql.Date date) {
String month = "-06-30";
if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 7) {
month = "-12-31";
}
String day = Integer.toString(getYearMonthDate(date.toString(), "Y"))
+ "-" + month;
return day;
} /***
*是否是年度最后一天
* @param date
* @return
*/
public static boolean isYearLastDay(java.sql.Date date) {
boolean i = false;
if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 12)
&& (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 31)) {
i = true;
}
return i;
} /**
* 是否季度第一天
* */
public static boolean isQuarterFirstDay(java.sql.Date date) {
boolean i = false;
if (((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 1)
|| (DateTimeUtil.getYearMonthDate(date.toString(), "M") == 4)
|| (DateTimeUtil.getYearMonthDate(date.toString(), "M") == 7) || (DateTimeUtil
.getYearMonthDate(date.toString(), "M") == 10))
&& (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 1)) {
i = true;
}
return i;
}
/***
* 季度第一天
* @param date
* @return
*/
public static String getQuarterFirstDay(java.sql.Date date) {
String month = "01";
if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 10) {
month = "10";
} else if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 7) {
month = "07";
} else if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 4) {
month = "04";
} else if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 1) {
month = "01";
} String day = Integer.toString(DateTimeUtil.getYearMonthDate(
date.toString(), "Y")) + "-" + month + "-01";
return day;
} /**
* 是否季度最后一天
* @param date
* @return
*/
public static boolean isQuarterLastDay(java.sql.Date date) {
boolean i = false;
if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 3)
&& (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 31)) {
i = true;
}
if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 6)
&& (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 30)) {
i = true;
}
if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 9)
&& (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 30)) {
i = true;
}
if ((DateTimeUtil.getYearMonthDate(date.toString(), "M") == 12)
&& (DateTimeUtil.getYearMonthDate(date.toString(), "D") == 31)) {
i = true;
}
return i;
}
/**
* 季度最后一天
* @param date
* @return
*/
public static String getQuarterLastDay(java.sql.Date date) {
String month = "-03-31";
if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 10) {
month = "-12-31";
} else if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 7) {
month = "-09-30";
} else if (DateTimeUtil.getYearMonthDate(date.toString(), "M") >= 4) {
month = "-06-30";
} String day = Integer.toString(DateTimeUtil.getYearMonthDate(
date.toString(), "Y")) + "-" + month;
return day;
} /***
* 是否月份最后一天
* @param date
* @return
*/
public static boolean isMonthLastDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH);
} /**
* 是否月份第一天
* @param date
* @return
*/
public static boolean isMonthFisrtDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.getActualMinimum(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH);
} /**
* 月份第一天日期
* @param date
* @return
*/
public static Date getMonthFisrtDay(Date date){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
return calendar.getTime();
} /**
* 星期的第几天
* @param strDate yy-mm-dd
* @return
*/
public static int getDateInWeek(String strDate) {
DateFormat df = DateFormat.getDateInstance();
try {
df.parse(strDate);
java.util.Calendar c = df.getCalendar();
int day = c.get(Calendar.DAY_OF_WEEK) - Calendar.SUNDAY;
return day;
} catch (ParseException e) {
return -1;
}
} public static java.sql.Date getSqlDate(java.util.Date date) {
java.sql.Date result = null;
try {
java.text.SimpleDateFormat myFormat = new SimpleDateFormat(LONGFORMAT);
String mystrdate = myFormat.format(date);
result = java.sql.Date.valueOf(mystrdate);
} catch (Exception e) {
return null;
}
return result;
} /**
* 上个月
* @param dt
* @return
*/
@SuppressWarnings("deprecation")
public static String getUpMDate(Date dt) {
dt.setDate(1);
dt.setDate(dt.getDate() - 1);
return dt.toLocaleString();
} public static String getShortDate(String dt) {
if (dt != null) {
java.text.SimpleDateFormat myFormat = new SimpleDateFormat(SHORTFORMAT);
try {
Date date = myFormat.parse(dt);
return getDate(date, SHORTFORMATNOSPIT);
} catch (ParseException e) {
return dt;
}
} else
return dt;
} public static String getLongDate(String dt) {
if (dt != null) {
java.text.SimpleDateFormat myFormat = new SimpleDateFormat(SHORTFORMAT);
try {
Date date = myFormat.parse(dt);
return getDate(date, SHORTFORMAT);
} catch (ParseException e) {
return dt;
}
} else
return dt;
} public static boolean isSameYearMonth(String date) {
try {
String currdate = getDate();
currdate = getShortDate(currdate).substring(0, 6);
String lastdate = getShortDate(date).substring(0, 6);
if (lastdate.equals(currdate)) {
return true;
} else {
return false;
}
} catch (NumberFormatException e) {
return false;
}
}
}

java DateTimeUtil 日期工具类的更多相关文章

  1. JAVA 8 日期工具类

    JAVA 8 日期工具类 主题描述 JAVA中日期时间的历史 代码成果 主题描述 JAVA的日期时间一直比较混乱,本来以为joda会是巅峰,但是JAVA 8改变了我的思想.但是即便在JAVA 8面前, ...

  2. Java案例——日期工具类

    需求:定义一个日期工具类,包含两个方法,按日期转化成指定格式的字符串,把字符串解析为指定格式的日期 然后定义一个测试类测试 分析: 1.定义一个日期工具类 2.定义一个方法dateToString,用 ...

  3. Java的日期工具类

    package com.tech.jin.util; import java.text.DateFormat; import java.text.ParseException; import java ...

  4. java 常用日期工具类的操作

    获取指定日期的时间戳 /* * 获取指定日期的时间戳 * */ public static long getMillis(String date_str){ try { SimpleDateForma ...

  5. 日期工具类 - DateUtil.java

    日期工具类,提供对日期的格式化和转换方法.获取区间日期.指定日期.每月最后一天等. 源码如下:(点击下载 -DateUtil.java.commons-lang-2.6.jar ) import ja ...

  6. Java基础知识强化92:日期工具类的编写和测试案例

    1. DateUtil.java,代码如下: package cn.itcast_04; import java.text.ParseException; import java.text.Simpl ...

  7. Java日期工具类,Java时间工具类,Java时间格式化

    Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...

  8. java 日期工具类DateUtils

      日期工具类DateUtils CreateTime--2017年5月27日08:48:00Author:Marydon DateUtils.java-对日期类的进一步封装 import java. ...

  9. java日期工具类DateUtil-续一

    上篇文章中,我为大家分享了下DateUtil第一版源码,但就如同文章中所说,我发现了还存在不完善的地方,所以我又做了优化和扩展. 更新日志: 1.修正当字符串日期风格为MM-dd或yyyy-MM时,若 ...

随机推荐

  1. spring 第一篇(1-3):鸟瞰spring蓝图

    如你所见,spring框架的核心是关注于如何使用DI.AOP和模板来让企业级java开发变得更简单.spring确实也是这样做的,所以很值得你去使用它.不过spring内容可能比你所能看到的要多很多. ...

  2. python 自动化之路 day 19 Django基础[二]

    Django - 路由系统 url.py - 视图函数 views.py - 数据库操作 models.py - 模板引擎渲染 - HttpReponse(字符串) - render(request, ...

  3. 黑马day11 事务的四大特性

    1.事务的四大特性:一个事务具有的最主要的特性.一个设计良好的数据库能够为我们保证这四大特性. 1.1原子性:原子性是指事务是一个不可切割的工作单位,事务中的操作要么都发生要么都不发生. 1.2一致性 ...

  4. asp.net 页面延时五秒,跳转到另外的页面

    asp.net 页面延时五秒,跳转到另外的页面的实现代码. --前台 <%@ Page Language="C#" AutoEventWireup="true&qu ...

  5. hdu 4576(概率dp+滚动数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4576 思路:由于每次从某一位置到达另一位置的概率为0.5,因此我们用dp[i][j]表示第i次操作落在 ...

  6. Laravel5.1 Middleware中间件(初级)

    中间件?什么鬼? 大家第一次接触这个词都会有这么个疑问,但它其实没那么神秘. 一句话就可以解释它:过滤HTTP请求专用机制. 为什么要使用中间件? 过滤HTTP请求是可以写在别的地方,比如说控制器中 ...

  7. AsyncTask工作机制简介

    昨天写的图片的三级缓存,假设有兴趣,能够去看下,浅谈图片载入的三级缓存原理(一) http://blog.csdn.net/wuyinlei/article/details/50606455 在里面我 ...

  8. php中变量引用&不可与global共同使用

    问题来源,新公司debug. 程序中代码大致如下 class Ci { private static $instance = NULL; public $name = 'hello'; public ...

  9. Android系统中Parcelable和Serializable的区别,自动化实现Parcelable接口的插件

    Parcelable和Serializable的区别 参考地址:http://greenrobot.me/devpost/android-parcelable-serializable/ 由于最终的区 ...

  10. 【python】-- Ajax

    Ajax AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交互式网页应用的网页开发技术方案. 异步的JavaScript:使用 ...