DateUtil
//有些地方需要修改 import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; public class DateUtil {
private final static String[] CN_Digits = { "〇", "一", "二", "三", "四", "五",
"六", "七", "八", "九", "十" };
public static final long daySpan = 24 * 60 * 60 * 1000;
/**yyyy-MM-dd HH:mm:ss*/
public static final String TIME_FORMAT_NORMAL = "yyyy-MM-dd HH:mm:ss";
/**yyyy-MM-dd*/
public static final String DATE_FORMAT_NORMAL = "yyyy-MM-dd";
/**yyyy.MM.dd*/
public static final String DATE_FORMAT_DOT = "yyyy.MM.dd";
/**yyyyMMdd*/
public static final String DATE_FORMAT_NO_MINUS = "yyyyMMdd";
/**yyMMdd*/
public static final String DATE_FORMAT_NO_MINUS_SHORT = "yyMMdd";
/**yyyy-MM*/
public static final String MONTH_FORMAT_NORMAL = "yyyy-MM";
/**MM-dd*/
public static final String MONTH_DAY_FORMAT = "MM-dd";
/**yyyyMMdd*/
public static final String DATE_FORMAT_SHORT = "yyyyMMdd";
/**yyyyMM*/
public static final String MONTH_FORMAT = "yyyyMM";
/**yyyy.MM*/
public static final String MONTH_FORMAT_DOT = "yyyy.MM";
/**yyyyMMddHHmm*/
public static final String DATE_FORMAT_MINUTE = "yyyyMMddHHmm";
/**yyyyMMddHHmmss*/
private static final String TIME_FORMAT_SHORT = "yyyyMMddHHmmss";
/**MM/dd/yyyy HH:mm:ss**/
public static final String MONTH_DAY_YEAR_HOUR_MINUTE ="MM/dd/yyyy HH:mm:ss"; /**
* 判断参数year、month、day能否组成一个合法的日期。
*
* @param month
* 月份,合法月份范围是 1-12
* @param day
* 日数
* @param year
* 年份,必须大于1900
* @return
*/
public static boolean isDate(int month, int day, int year) {
if (year < 1900) {
return false;
}
if (month < 1 || month > 12) {
return false;
}
if (day < 1 || day > 31) {
return false;
} // 判断年份是否为闰年
@SuppressWarnings("unused")
boolean leapYear = isLeapYear(year);
// 获得该年该月的最大日期
int maxD = getMaxDay(year, month);
if (day > maxD) {
return false;
} return true;
} /**
* 给定一个年份和月份,可以得到该月的最大日期。 例如 2009年1月,最大日期为31。
*
* @param year
* 年份,必须大于1900
* @param month
* 月份,合法月份范围是 1-12
* @return
*/
public static int getMaxDay(int year, int month) {
if ((month == 4) || (month == 6) || (month == 9) || (month == 11)) {
return 30;
}
if (month == 2) {
if (isLeapYear(year)) {
return 29;
} else {
return 28;
}
}
return 31;
} /**
* 判断年份是否为闰年。
*
* @param year
* 年份,必须大于1900
* @return
*/
public static boolean isLeapYear(int year) {
boolean leapYear = ((year % 400) == 0);
if (!leapYear) {
leapYear = ((year % 4) == 0) && ((year % 100) != 0);
}
return leapYear;
} public static String getCurrentStringTime(){
Date date=new Date();
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
String formatDate=format.format(date);
return formatDate;
} public static String getCurrentTimeSecond(){
Date date=new Date();
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formatDate=format.format(date);
return formatDate;
}
/**
* yyyy-MM-dd HH:mm:ss格式串转换为日期
* @param yyyy-MM-dd HH:mm:ss 格式日期
* @return Date日期
*/
public static Date paseDate(String formatDate){
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=null;
try {
date = format.parse(formatDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static String getCurrentTimeMilliSecond(){
Date date=new Date();
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
String formatDate=format.format(date);
return formatDate;
} public static String getCurrentMonth(){
Date date=new Date();
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM");
String formatDate=format.format(date);
return formatDate;
}
/**
* 获取当前日期(格式为20110802)
* @return
*/
public static String getCurrentDay(){
Date date=new Date();
SimpleDateFormat format=new SimpleDateFormat("yyyyMMdd");
String formatDate=format.format(date);
return formatDate;
}
/**
* 获取当前时间
* @param format 时间格式,例如:yyyy-MM-dd
* @param count 增加或减少的天数
* @return
*/
public static String getCurrentDate(String format,Integer count) {
java.text.SimpleDateFormat df = new java.text.SimpleDateFormat(format);
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.DATE, count);//增加或减少的天数
String currentDate = df.format(cal.getTime());
return currentDate;
} /**
* 增加月份后的日期数
* @param countMoney
* @return
*/
public static String getDateAddMoney(String dateStr, int m) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = df.parse(dateStr);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, m);
return df.format(calendar.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
return null;
} /**
* 获取下个月的第一天
* @param time
* @param format
* @return
*/
public static String getNextMonthFirstDay(String format) {
java.text.SimpleDateFormat df = new java.text.SimpleDateFormat(format);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 1);// 当前月+1,即下个月
cal.set(Calendar.DATE, 1);// 将下个月1号作为日期初始值
String currentMonth = df.format(cal.getTime());
return currentMonth;
} /**
* 获取下个月的最后一天
* @param time
* @param format
* @return
*/
public static String getNextMonthLastDay(String format) {
java.text.SimpleDateFormat df = new java.text.SimpleDateFormat(format);
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DATE, 1);// 将下2个月1号作为日期初始值
cal.add(Calendar.MONTH, 2);// 当前月+2,即下2个月
cal.add(Calendar.DATE, -1);// 下2个月1号减去一天,即得到下1一个月最后一天
String currentMonth = df.format(cal.getTime());
return currentMonth;
} public static String format(Date date) {
if(null==date){
return null;
}
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formatDate=format.format(date);
return formatDate;
} public static String format(Date date, String formatStr) {
SimpleDateFormat format = new SimpleDateFormat(formatStr);
String formatDate=format.format(date);
return formatDate;
} public static String format4Null(Date date, String formatStr) { if(date == null) {
return null;
} else { return format(date, formatStr);
}
} /**
* 得到2个字符串日期之间的日期差,返回结果以秒为单位
* @param beginTime
* @param endTime
* @return
* @throws ParseException
*/
public static Long getOffTime(String beginTime, String endTime) {
SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try{
java.util.Date begin = dfs.parse(beginTime);
java.util.Date end = dfs.parse(endTime);
long between = (end.getTime() - begin.getTime()) / 1000;// 除以1000是为了转换成秒
return between;
}catch(Exception e){
e.printStackTrace();
}
return null;
} public static String getYesterday(){
return getCurrentDate("yyyy-MM-dd",-1)+" 00:00:00";
} public static String getToday(){
return getCurrentDate("yyyy-MM-dd",0)+" 00:00:00";
} public static void main(String args[]){
} /**
* 昨天的起始终止
* >=起始 <终止
* @param nowTime
* @return
*/
public static Pair<Long, Long> getLastDay(long nowTime){
try{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
String s = sdf.format(new Date(nowTime));
Date yesdEnd = sdf.parse(s); return new Pair<Long, Long>(yesdEnd.getTime() - daySpan, yesdEnd.getTime());
}catch (Exception e) {
throw new RuntimeException(e);
}
} /**
* 取得上一个自然周起始(返回最近的周日0点为结束,之前一个周日0点为开始)
* >=起始 <终止
* @param nowTime
* @return
*/
public static Pair<Long, Long> getLastNativeWeek(long nowTime){
try{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
String s = sdf.format(new Date(nowTime));
Date yesdEnd = sdf.parse(s); // 今天0点 Calendar c = Calendar.getInstance();
c.setTime(yesdEnd);
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
long weekEnd = c.getTimeInMillis();
return new Pair<Long, Long>(weekEnd - daySpan * 7, weekEnd);
}catch (Exception e) {
throw new RuntimeException(e);
}
} /**
* 取得上一个月的起始
* >=起始 <终止
* @param nowTime
* @return
*/
public static Pair<Long, Long> getLastMonth(long nowTime){
try{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-01 00:00:00");
String s = sdf.format(new Date(nowTime));
Date lmEnd = sdf.parse(s); // 本月1号0点 Calendar c = Calendar.getInstance();
c.setTime(lmEnd);
c.add(Calendar.MONTH, -1); return new Pair<Long, Long>(c.getTimeInMillis(), lmEnd.getTime());
}catch (Exception e) {
throw new RuntimeException(e);
}
} /**
* 计算两个日期之间相差的月数
* @param startDate 开始日期
* @param endDate 结束日期
* @return 两个日期之间相差的月数
*/
public static int dateIntervalMonth(Date startDate, Date endDate) { int intervalMonth = 0;
try {
if(startDate==null || endDate==null){
return intervalMonth;
}
Calendar starCal = Calendar.getInstance();
starCal.setTime(startDate); int sYear = starCal.get(Calendar.YEAR);
int sMonth = starCal.get(Calendar.MONTH); Calendar endCal = Calendar.getInstance();
endCal.setTime(endDate);
int eYear = endCal.get(Calendar.YEAR);
int eMonth = endCal.get(Calendar.MONTH); intervalMonth = ((eYear - sYear) * 12 + (eMonth - sMonth));
} catch (Exception e) {
intervalMonth = 0;
} return intervalMonth;
} /***
* 根据所选格式将字符串转换为日期类型
* @param dateStr 待转换的字符串
* @param formateRule 转换格式
* @return 日期类型结果
*/
public static Date convertAsDate(String dateStr, String formateRule) {
DateFormat fmt = new SimpleDateFormat(formateRule);
try {
if(dateStr == null) {
return null;
}
return fmt.parse(dateStr);
} catch (ParseException e) {
return null;
}
}
/**
* 自动把String时间转成Date类型
* @param dateStr
* @return
*/
public static Date autoConvertAsDate(String dateStr){
try {
if(null ==dateStr){
return null;
}
Object obj = StringUtils.convert(dateStr, Date.class);
if(null!=obj){
return (Date)obj;
}else{
return null;
}
} catch (Exception e) {
return null;
}
} public static SimpleDateFormat newTimeFormater(){
return new SimpleDateFormat(TIME_FORMAT_NORMAL);
}
/****
* 计算时间差,返回秒
* @param start
* @param end
* @return
*/
public static long timeDifference(long start,long end){
return (end-start)/1000;
} /* 判断输入的字符串是否是合法的生日 生日不能大于当前日期,支持 yyyy-MM-dd ,yyyyMMdd MM-dd-yyyy ,yyyy年MM月dd日等
* @param birthday 一个日期格式的字符串
* @param formats 期望转换后的日期格式数组
* @return
* */
public static boolean isRightDate(String birthday,String[] formats){ //记录传入的日期字符串,转换成日期类型
Date birth=null; //判断格式是否正确,默认值为false
boolean isRight=false;
for(String f:formats){
try {
birth =new SimpleDateFormat(f).parse(birthday);
//校验日期转换后是和传入的值不相同,说明日期传入有问题
if(!new SimpleDateFormat(f).format(birth).equals(birthday)){
return false;
}
isRight=true;
break;
} catch (ParseException e) {}
} if(isRight){
//获取当前日期的毫秒数
long now =new Date().getTime();
//获取生日的毫秒数
long birthTime = birth.getTime();
//如果当前时间小于生日,生日不合法。反之合法
return birthTime<=now;
}else{
//输入的参数类型不是日期类型,或者类型和过滤中设置的类型不匹配
return false;
}
}
/***
* 计算时间差,返回天数
* @param b_date 大时间
* @param s_date 小时间
* @return 天数
*/
public static long dateSubtract(Date b_date,Date s_date){
if(StringUtils.blank(s_date) || StringUtils.blank(b_date)){
return 0;
}else{
long dateLong1 = b_date.getTime();
long dateLong2 = s_date.getTime();
long day = (dateLong1-dateLong2)/1000/60/60/24;
return day;
}
}
}
DateUtil的更多相关文章
- JAVA 日期格式工具类DateUtil.java
DateUtil.java package pers.kangxu.datautils.utils; import java.text.SimpleDateFormat; import java.ut ...
- DateUtil(SimpleDateFormat)
import java.util.Calendar; import java.util.Date; import java.text.SimpleDateFormat; public class Da ...
- DateUtil工具类
package com.autoserve.mh.common.util; import java.text.SimpleDateFormat; import java.util.Calendar ...
- 邓博泽 java最全的DateUtil工具类
package com.kld.yijie.web.util; import org.slf4j.Logger;import org.slf4j.LoggerFactory; import java. ...
- 整理的java的日期DateUtil
package cn.knet.data.untils; import java.text.SimpleDateFormat; import java.util.Calendar; import ja ...
- 日期工具类 - DateUtil.java
日期工具类,提供对日期的格式化和转换方法.获取区间日期.指定日期.每月最后一天等. 源码如下:(点击下载 -DateUtil.java.commons-lang-2.6.jar ) import ja ...
- 使用日期工具类:DateUtil
利用java开发,避免不了String.Date转换,前一天.后一天等问题.给出一个工具类,仅供学习交流. import java.text.DateFormat; import java.text. ...
- OpenCV 4 Python高级配置—安装setuptools,matplotlib,six,dateutil,pyparsing 完整过程
Matplotib 是python 的一个绘图库,里头有各种各样的绘图方法,可以用Matplotib 显示图像,放大图像,保存图像等等,对于OpenCV处理图像具有非常大的帮助.但是,安装Matplo ...
- Python 安装matplotlib,six,dateutil,pyparsing 完整过程
[摘要:正在做词频剖析的时间,须要用matlotlib 做图表,柱状图啥的,因而便最先了一个又一个的装置库的进程 由于matplotlib 须要依附很多其他科教盘算的第三圆库,须要一个一个的装置了.. ...
随机推荐
- while语句
<?php $num=10;//被除数 $cs=2; $str=""; while ($num !=0) { $ys=$num % $cs ...
- Winpcap安装,Cannot open include file 'pcap.h'
VC报错 fatal error C1083: Cannot open include file: 'pcap.h': No such file or directory Winpcap是window ...
- 详细!交叉编译时 note: the mangling of 'va_list' has changed in GCC 4.4解决办法
为什么要在标题前面加了详细两个字,就是为了吸引看文章的你还有写文章的我这种小白,我是从坑里面爬出来了. 废话少说.... 问题就是这样子了,至于解决办法,在网上搜索了很久,大多数以一段英文作为解决办法 ...
- windows 录音程序(二)
(二)录音流程 Waveform APIs,流程如下: a.打开录音设备waveInOpen; b.准备wave数据头waveInPrepareHeader; c.准备数据块waveInAddBuff ...
- selenium support
org.openqa.selenium.support.ui.Select select = new org.openqa.selenium.support.ui.Select(driver.fi ...
- 决策树 -- ID3算法小结
ID3算法(Iterative Dichotomiser 3 迭代二叉树3代),是一个由Ross Quinlan发明的用于决策树的算法:简单理论是越是小型的决策树越优于大的决策树. 算法归 ...
- HTML5-列表的使用
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 工具mark
http://zh.snipaste.com/ 截图工具 https://brookhong.github.io/2014/04/28/keycast-on-windows-cn.html 按键显示 ...
- DBCC 命令2
状态查询:收集和显示各类信息,状态检查. 如cachestats.pss.sqlmgrstats.memorystatus.proccache.freeproccache.freesystemcach ...
- Swift 对比学习 (一)
Swift相对Objective-C来说,有过之而无不及,并与Objective-C无缝混编,可谓利器.在Swift中可以看到不同的编程语言的影子,天下语言一大抄,这样也好,减低了不同语言的学习成本. ...