Java開發日期工具類,分享一下
package com.heivr.webapp.authority.util;
/**
日期類
* @date 2003-12-04
* @version 1.0
*/
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Timer;
public class DateUtil {
static long currentTime = 0L;
static Timer timer = new Timer();
public static void main(String[] args) {
System.out.println(getPrevMonth("201312"));
}
/**
* 獲取一個月的最後一天
*
* @param dat
* @return
*/
public static String getEndDateOfMonth(String dat) {// yyyy-MM
String day = "";
String month = dat.substring(5, 7);
int mon = Integer.parseInt(month);
if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8
|| mon == 10 || mon == 12) {
day = "-31";
} else if (mon == 4 || mon == 6 || mon == 9 || mon == 11) {
day = "-30";
} else {
if (isLeapYear(dat)) {
day = "-29";
} else {
day = "-28";
}
}
return dat + day;
}
/**
* 判斷是否潤年
*
* @param ddate
* @return
*/
public static boolean isLeapYear(String ddate) {
/**
* 詳細設計: 1.被400整除是閏年,否則: 2.不能被4整除則不是閏年 3.能被4整除同時不能被100整除則是閏年
* 3.能被4整除同時能被100整除則不是閏年
*/
Date d = strToDate(ddate);
GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
gc.setTime(d);
int year = gc.get(Calendar.YEAR);
if ((year % 400) == 0)
return true;
else if ((year % 4) == 0) {
if ((year % 100) == 0)
return false;
else
return true;
} else
return false;
}
/**
* 金額整數位不足4位補0,小數位不足2位補0
*
* @param str
* @return
*/
public static String makeZero(String str) {
if (str.contains(".")) {
String numstr = str.substring(0, str.lastIndexOf("."));
String fstr = str.substring(str.lastIndexOf(".") + 1, str.length());
StringBuffer code_numstr = new StringBuffer();
for (int j = 0; j < 4 - numstr.length(); j++) {
code_numstr = code_numstr.append("0");
}
code_numstr.append(numstr);
StringBuffer code_fstr = new StringBuffer();
for (int j = 0; j < 2 - fstr.length(); j++) {
code_fstr = code_fstr.append("0");
}
fstr += code_fstr.toString();
return code_numstr + "." + fstr;
} else {
String numstr = str.substring(0, str.lastIndexOf("."));
StringBuffer code_numstr = new StringBuffer();
for (int j = 0; j < str.lastIndexOf(".") - numstr.length(); j++) {
code_numstr = code_numstr.append("0");
}
code_numstr = code_numstr.append(numstr);
return code_numstr + ".00";
}
}
/**
* 獲取業務編號
*
* @return 返回時間類型yyyyMMddHHmmss
*/
public static String getModelCode() {
return String.valueOf(String.valueOf(System.nanoTime()));
}
/**
* 獲取現在時間
*
* @return返回短時間格式 yyyy-MM-dd HH:mm:ss
*/
public static String getNowDateSS() {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(currentTime);
return dateString;
}
/**
* 獲取現在時間
*
* @return返回短時間格式 yyyy-MM-dd
*/
public static String getNowDate() {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(currentTime);
return dateString;
}
/**
* 取參數月的前一個月 month: yyyy-MM或yyyyMM
*/
public static String getPrevMonth(String _month) {
String preMonth = "";
if (_month.length() == 6) {
_month = _month.substring(0, 4) + "-" + _month.substring(4);
}
if (_month.length() >= 7) {
if (_month.substring(5, 7).equals("01")) { // 1月
preMonth = (Integer.parseInt(_month.substring(0, 4)) - 1)
+ "-12";
} else {
int im = Integer.parseInt(_month.substring(5, 7)) - 1;
if (im < 10) {
preMonth = _month.substring(0, 4) + "-0" + im;
} else {
preMonth = _month.substring(0, 4) + "-" + im;
}
}
}
return preMonth;
}
/**
* 得到一個時間延後或前移幾天的時間,nowdate爲時間,delay爲前移或後延的天數
*/
public static String getNextDay(String nowdate, Integer delay) {
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String mdate = "";
Date d = strToDate(nowdate);
long myTime = (d.getTime() / 1000) + delay * 24 * 60 * 60;
d.setTime(myTime * 1000);
mdate = format.format(d);
return mdate;
} catch (Exception e) {
return "";
}
}
/**
* 將短時間格式字符串轉換爲時間 yyyy-MM-dd
*
* @param strDate
* @return
*/
public static Date strToDate(String strDate) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatter.parse(strDate, pos);
return strtodate;
}
/**
* 得到二個日期間的間隔天數
*/
public static String getTwoDay(String sj1, String sj2) {
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
long day = 0;
try {
java.util.Date date = myFormatter.parse(sj1);
java.util.Date mydate = myFormatter.parse(sj2);
day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
} catch (Exception e) {
return "";
}
return day + "";
}
}