?? datetimetool.java
字號:
package com.yuanchung.sales.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import com.yuanchung.sales.exception.DateFormatException;
/**
* <p>
* Title:
* </p>
* <p>
* Description:
* </p>
* <p>
* Copyright: Copyright (c) 2006
* </p>
* <p>
* Company:
* </p>
*
* @author not attributable
* @version 1.0
*/
@SuppressWarnings("unchecked")//剔除未檢查的警告;
public class DateTimeTool {
public static void main(String[] args) throws ParseException {
String str = "12345";
System.out.println(str.substring(0, 5));
//System.out.println(DateTimeTool
//.getCurrentDate("yyyy-MM-dd_HH-mm-ss"));
//System.out.println(compare("2008-01-01 02-01-01", "2008-01-01 03-01-02"));
// System.out.println(getMaxDate(new Date(), "2009-01-01 02-01-01"));
}
public DateTimeTool() {
}
/**
* ????????????
*
* @return
*/
public static Date getYesterday() {
Date date = new Date();
return new Date(date.getTime() - 1000 * 60 * 60 * 24);
}
/**
* ????????????
*
* @param format
* @return
*/
public static String getOneWeekAgoStr(String format) {
long current = new java.util.Date().getTime();
long aweek = 7 * 24 * 60 * 60 * 1000;
long oneweekago = current - aweek;
return new SimpleDateFormat(format).format(new java.util.Date(
oneweekago));
}
/**
* ???3????????
*
* @param format
* @return
*/
public static String getThreeDayAgoStr(String format) {
long current = new java.util.Date().getTime();
long threeday = 3 * 24 * 60 * 60 * 1000;
long threedayago = current - threeday;
return new SimpleDateFormat(format).format(new java.util.Date(
threedayago));
}
/**
* ?????????????
*
* @param format
* @return
*/
public static String getGivenDayAgoStr(int beforeDays, String format) {
Calendar c = Calendar.getInstance(); // ?????????????
int d = c.get(Calendar.DAY_OF_MONTH); // ????????
int d2 = d - beforeDays;
c.set(Calendar.DAY_OF_MONTH, d2); // ???????????????
//
// long current = new java.util.Date().getTime();
// long beforetimes = beforeDays * 24 * 60 * 60 * 1000;
// long times = current - beforetimes;
return new SimpleDateFormat(format).format(c.getTime());
}
/**
* ????????
*
* @param format
* @return
*/
public static String getCurrentDate(String format) {
return new SimpleDateFormat(format).format(new Date());
}
public static boolean lastDayOfYear(Integer year,Integer dayOfYear) {
boolean flag = false;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.DAY_OF_YEAR, dayOfYear);
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.add(Calendar.YEAR, 1);
c.set(Calendar.DAY_OF_YEAR, 1);
c.set(Calendar.DATE, c.get(Calendar.DAY_OF_YEAR)-1);
if(cal.equals(c)) {
flag = true;
}
return flag;
}
/**
* @author 陸文邦
* @function 判斷該天是否為該年的第一天;
* @param year
* @param dayOfYear
* @return
* @time 2008-12-15
*/
public static boolean firstDayOfYear(Integer year,Integer dayOfYear) {
boolean flag = false;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.DAY_OF_YEAR, dayOfYear);
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.DAY_OF_YEAR, 1);
if(cal.equals(c)) {
flag = true;
}
return flag;
}
/**
* @author 陸文邦
* @function 獲取該天為周幾;
* @param year
* @param dayOfYear
* @return 返回星期幾;
*/
public static int getWeekNoByDayOfYear(Integer year,Integer dayOfYear) {
Integer weekNO = null;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.DAY_OF_YEAR, dayOfYear);
weekNO = cal.get(Calendar.DAY_OF_WEEK);
return weekNO;
}
/**
* @author 陸文邦
* @param year
* @return 獲取該年度能夠的日期;
*/
public static int getWeekCountOfYear(Integer year) {
Integer weekCount = null;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, Calendar.DECEMBER);
cal.set(Calendar.DATE,31);
weekCount = cal.get(Calendar.WEEK_OF_YEAR);
if(weekCount==1){
weekCount = 52;
}
return weekCount;
}
/**
* @author 陸文邦;
* 獲取本周周日的日期;
* @param format
* @return 字符串;
*/
public static String getFirstDateByWeek(int yearInt,int monthInt,int weekOfYear) {
Calendar cal = Calendar.getInstance();//定義日歷;
if(monthInt==11&&weekOfYear==1) {
cal.set(Calendar.YEAR, yearInt);//設置年份時間,年最后一周的處理+1;
cal.set(Calendar.MONTH, monthInt);//設置月份時間;
cal.set(Calendar.WEEK_OF_YEAR, getWeekCountOfYear(yearInt)+1);//設置日歷時間;
cal.set(Calendar.DAY_OF_WEEK, 1);
} else {
cal.set(Calendar.YEAR, yearInt);//設置年份時間;
cal.set(Calendar.MONTH, monthInt);//設置月份時間;
cal.set(Calendar.WEEK_OF_YEAR, weekOfYear);//設置日歷時間;
cal.set(Calendar.DAY_OF_WEEK, 1);
}
Date date = cal.getTime();//獲取本周第一天的時間;
return new SimpleDateFormat("yyyy-MM-dd").format(date);
}
/**
* @author 陸文邦;
* @function 根據傳的日期獲取未來7天的日期數量;
* @param date
* @return list
*/
public static List getDateNos(String firstDate) throws DateFormatException{
List bigList = new ArrayList();
Date date = buildDate(firstDate);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
for (int i = 0; i < 7; i++) {
List<String> singleList = new ArrayList<String>();
String dateNo = new SimpleDateFormat("dd").format(cal.getTime());//獲取日期;
singleList.add(dateNo);
String monthNo = String.valueOf(Integer.parseInt(new SimpleDateFormat("MM").format(cal.getTime()))-1);//獲取月份;
singleList.add(monthNo);
String yearNo = new SimpleDateFormat("yyyy").format(cal.getTime());//獲取年份;
singleList.add(yearNo);
String weekOfYear = String.valueOf(cal.get(Calendar.WEEK_OF_YEAR));//年之周;
singleList.add(weekOfYear);
String dayOfYear = String.valueOf(cal.get(Calendar.DAY_OF_YEAR));//年之日;
singleList.add(dayOfYear);
bigList.add(singleList);
cal.add(Calendar.DATE, 1);//前進一天;
}
return bigList;
}
/**
* @author 陸文邦;
* 獲取本周周六的日期;
* @param format
* @return 字符串;
*/
public static String getLastDateByWeek(int yearInt,int monthInt,int weekOfYear) {
Calendar cal = Calendar.getInstance();//定義日歷;
if(monthInt==11&&weekOfYear==1) {
cal.set(Calendar.YEAR, yearInt+1);//設置年份時間;
cal.set(Calendar.MONTH, 0);//設置月份時間;
cal.set(Calendar.WEEK_OF_YEAR, weekOfYear);//設置日歷時間,年當中的第一周;
cal.set(Calendar.DAY_OF_WEEK, 7);
} else {
cal.set(Calendar.YEAR, yearInt);//設置年份時間;
cal.set(Calendar.MONTH, monthInt);//設置月份時間;
cal.set(Calendar.WEEK_OF_YEAR, weekOfYear);//設置日歷時間;
cal.set(Calendar.DAY_OF_WEEK, 7);
}
Date date = cal.getTime();//獲取本周第一天的時間;
return new SimpleDateFormat("yyyy-MM-dd").format(date);
}
/**
* @author 陸文邦;
* 獲取明天的日期;
* @param format
* @return
*/
public static String getTomorrowDate(String format,Integer mount) {
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, mount);
Date date = c.getTime();
return new SimpleDateFormat(format).format(date);
}
/**
* @author 陸文邦;
* 獲取當前月第一天;
* @param format
* @return
*/
public static String getMonthFirstDay(String format) {
Calendar c = Calendar.getInstance();
c.set(Calendar.DATE, 1);//把日期設置為當月第一天
Date date = c.getTime();
return new SimpleDateFormat(format).format(date);
}
/**
* @author 陸文邦;
* 獲取當前月最后一天;
* @param format
* @return
* 思路:該月最后一天的號數就是當月的天數;
*/
public static String getMonthLastDay(String format) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);//把月份設置成下個月
cal.set(Calendar.DAY_OF_MONTH, 1);//把日期設置成一號;
cal.set(Calendar.DATE, cal.get(Calendar.DATE) - 1);//下個月一號減去一天就是上個月的最后一天,然后把日期設置進去;
Date date = cal.getTime();
return new SimpleDateFormat(format).format(date);
}
/**
* @author 陸文邦;
* 獲取當月的最后一天是星期幾;
* @param cal
* @return
*/
public static int getLastDateByWeek(Calendar cal) {
Calendar c = (Calendar) cal.clone();
c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1);//把月份設置成下個月
c.set(Calendar.DAY_OF_MONTH, 1);//把日期設置成一號;
c.set(Calendar.DATE, c.get(Calendar.DATE) - 1);//下個月一號減去一天就是上個月的最后一天,然后把日期設置進去;
int weekNo = c.get(Calendar.DAY_OF_WEEK);
return weekNo;
}
/**
* @author 陸文邦;
* 獲取當月的第一天是星期幾;
* @param cal
* @return
*/
public static int getFirstDateByWeek(Calendar cal) {
Calendar c = (Calendar) cal.clone();
c.set(Calendar.DATE, 1);
int weekNo = c.get(Calendar.DAY_OF_WEEK);
return weekNo;
}
/**
* @author 陸文邦;
* @param c 日歷參數,
* @param weekNum 周幾
* @return int 第幾次;
*/
public static int selectNumDate(Calendar c,Integer weekNum) {
int count = 0;
Calendar ccc = (Calendar) c.clone(); //參數前現實的日期;
Date date = ccc.getTime();
Calendar cal = (Calendar) c.clone();
int dateNum = getLastDate(cal);
cal.set(Calendar.DAY_OF_MONTH, 1);//把日期設置成一號;
for(int i=0;i<dateNum;i++) {
int tempWeekNum = cal.get(Calendar.WEEK_OF_MONTH);
if(tempWeekNum==weekNum){
count++;
if(date.equals(cal.getTime())){
count++;
return count;
}
}
cal.add(Calendar.DAY_OF_MONTH, 1);
}
return 0;
}
/**
* @author 陸文邦;
* 獲取當前月最后一天;
* @param cal
* @return
* 思路:該月最后一天的號數就是當月的天數;
*/
public static int getLastDate(Calendar c) {
Calendar cal = (Calendar) c.clone();
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);//把月份設置成下個月
cal.set(Calendar.DAY_OF_MONTH, 1);//把日期設置成一號;
cal.set(Calendar.DATE, cal.get(Calendar.DATE) - 1);//下個月一號減去一天就是上個月的最后一天,然后把日期設置進去;
int DayNo = cal.get(Calendar.DATE);
return DayNo;
}
/**
* @author 陸文邦
* @functiuon
* @param year
* @param dayOfYear
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -