📄 dateutils.java
字号:
package com.pegasus.framework.util;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import com.pegasus.framework.bo.QuaterDateOfYear;
import com.pegasus.framework.bo.StartEndDayMonth;
/**
*
*/
public class DateUtils {
public static Map<String,DateFormat> dateFormatMap = new HashMap<String,DateFormat>();
/**
* 1秒的毫秒数
*/
public static final int MILLSEC = 1000;
/**
* 一小时分钟数
*/
public static final int HOUR_MINUTES = 60;
/**
* 一天小时数
*/
public static final int DAY_HOURS = 24;
/**
*一天的毫秒数
*/
public static final int DAY_MILLSEC = 86400000;
/**
* 一共多少个月份
*/
public static final int ALL_MONTH_COUNT = 12;
public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";
public static final String DEFAULT_MONTH_PATTERN = "yyyy-MM";
public static final String DEFAULT_TIME_PATTERN = "HH:mm:ss";
public static final String DEFAULT_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final SimpleDateFormat dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
public static final SimpleDateFormat timeFormat = new SimpleDateFormat(DEFAULT_TIME_PATTERN);
public static final SimpleDateFormat dateTimeFormat = new SimpleDateFormat(DEFAULT_DATETIME_PATTERN);
public static final SimpleDateFormat monthFormat = new SimpleDateFormat(DEFAULT_MONTH_PATTERN);
static {
dateFormatMap.put("date", dateFormat);
dateFormatMap.put("time", timeFormat);
dateFormatMap.put("dateTime", dateTimeFormat);
dateFormatMap.put("month", monthFormat);
}
public static Date getToday() {
return new Date(System.currentTimeMillis());
}
public static Time getTodayTime() {
return new Time(System.currentTimeMillis());
}
public static String getNowYearStr() {
Calendar thisYear = Calendar.getInstance();
int iYear = thisYear.get(Calendar.YEAR);
String result = new Integer(iYear).toString();
return result;
}
public static String getNowMonthStr() {
Calendar thisYear = Calendar.getInstance();
int iMonth = thisYear.get(Calendar.MONTH);
String result = new Integer(iMonth + 1).toString();
return result;
}
public static Timestamp getTodayTimestamp() {
return new Timestamp(System.currentTimeMillis());
}
public static Date getDateIgnoreMilliSecond(Date today) {
return new Date(today.getTime() / 1000L * 1000L);
}
public static Date parse(String dateString) {
return parse(dateString, "date");
}
public static java.sql.Date convertTo(java.util.Date date) {
return new java.sql.Date(date.getTime());
}
public static java.util.Date convertTo(java.sql.Date date) {
return new java.util.Date(date.getTime());
}
public static Date parse(String dateString, String pattern) {
if (dateString != null) {
DateFormat formatter = null;
synchronized (dateFormatMap) {
formatter = (DateFormat) dateFormatMap.get(pattern);
if (formatter == null) {
formatter = new SimpleDateFormat(pattern);
dateFormatMap.put(pattern, formatter);
}
}
try {
return convertTo(formatter.parse(dateString));
} catch (ParseException pe) {
return null;
}
} else {
return null;
}
}
public static int parseMonth(String dateString) {
try {
Date date = parse(dateString, "month");
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(date.getTime());
return cal.get(Calendar.MONTH);
}catch(Exception e) {
return -1;
}
}
public static String format(long timemillis) {
return format(new Date(timemillis), "date");
}
public static String formatTimestamp(long timemillis,String pattern) {
return formatTimestamp(new Timestamp(timemillis), pattern);
}
public static String formatTimestamp(Timestamp timestamp,String pattern) {
if (timestamp != null) {
DateFormat formatter = null;
synchronized (dateFormatMap) {
formatter = (DateFormat) dateFormatMap.get(pattern);
if (formatter == null) {
formatter = new SimpleDateFormat(pattern);
dateFormatMap.put(pattern, formatter);
}
}
return formatter.format(timestamp);
} else {
return "";
}
}
public static String format(long timemillis, String pattern) {
return format(new Date(timemillis), pattern);
}
public static String format(Date date) {
return format(date, "date");
}
public static String format(Date date, String pattern) {
if (date != null) {
DateFormat formatter = null;
synchronized (dateFormatMap) {
formatter = (DateFormat) dateFormatMap.get(pattern);
if (formatter == null) {
formatter = new SimpleDateFormat(pattern);
dateFormatMap.put(pattern, formatter);
}
}
return formatter.format(date);
} else {
return "";
}
}
public static Date rollDate(int num) {
return rollDate(getToday(), num);
}
public static Date rollDate(Date date, int num) {
return roll(Calendar.DATE, date, num);
}
public static Date rollHour(int num) {
return rollHour(getToday(), num);
}
public static Date rollHour(Date date, int num) {
return roll(Calendar.HOUR, date, num);
}
public static Date rollMinute(int num) {
return rollMinute(getToday(), num);
}
public static Date rollMinute(Date date, int num) {
return roll(Calendar.MINUTE, date, num);
}
public static Date roll(int type, Date date, int num) {
long millsec = 0;
switch (type) {
case Calendar.MINUTE:
millsec = 60000;
break;
case Calendar.HOUR:
millsec = 3600000;
break;
case Calendar.DATE:
millsec = 86400000;
break;
}
return new Date(date.getTime() + num * millsec);
}
public static Date getDate(int year, int month, int day, int hour, int minute, int second, int milli, boolean max) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
if (month == -1) {
if (max)
month = cal.getActualMaximum(Calendar.MONTH);
else
month = cal.getActualMinimum(Calendar.MONTH);
}
cal.set(Calendar.MONTH, month);
if (day == -1) {
if (max)
day = cal.getActualMaximum(Calendar.DATE);
else
day = cal.getActualMinimum(Calendar.DATE);
}
cal.set(Calendar.DATE, day);
if (hour == -1) {
if (max)
hour = cal.getActualMaximum(Calendar.HOUR_OF_DAY);
else
hour = cal.getActualMinimum(Calendar.HOUR_OF_DAY);
}
cal.set(Calendar.HOUR_OF_DAY, hour);
if (minute == -1) {
if (max)
minute = cal.getActualMaximum(Calendar.MINUTE);
else
minute = cal.getActualMinimum(Calendar.MINUTE);
}
cal.set(Calendar.MINUTE, minute);
if (second == -1) {
if (max)
second = cal.getActualMaximum(Calendar.SECOND);
else
second = cal.getActualMinimum(Calendar.SECOND);
}
cal.set(Calendar.SECOND, second);
if (milli == -1) {
if (max)
milli = cal.getActualMaximum(Calendar.MILLISECOND);
else
milli = cal.getActualMinimum(Calendar.MILLISECOND);
}
cal.set(Calendar.MILLISECOND, milli);
return convertTo(cal.getTime());
}
public static Date getDate(int year, int month, int day, int hour, int minute, int second, boolean max) {
return getDate(year, month, day, hour, minute, second, -1, max);
}
public static Date getDate(int year, int month, int day, int hour, int minute, boolean max) {
return getDate(year, month, day, hour, minute, -1, max);
}
public static Date getDate(int year, int month, int day, int hour, boolean max) {
return getDate(year, month, day, hour, -1, max);
}
public static Date getDate(int year, int month, int day, boolean max) {
return getDate(year, month, day, -1, max);
}
public static Date getDate(int year, int month, boolean max) {
return getDate(year, month, -1, max);
}
public static Date getDate(int year, boolean max) {
return getDate(year, -1, max);
}
public static Date getMaxDate(int year, int month, int day, int hour, int minute, int second) {
return getDate(year, month, day, hour, minute, second, true);
}
public static Date getMaxDate(int year, int month, int day, int hour, int minute) {
return getDate(year, month, day, hour, minute, true);
}
public static Date getMaxDate(int year, int month, int day, int hour) {
return getDate(year, month, day, hour, true);
}
public static Date getMaxDate(int year, int month, int day) {
return getDate(year, month, day, true);
}
public static Date getMaxDate(int year, int month) {
return getDate(year, month, true);
}
public static Date getMaxDate(int year) {
return getDate(year, true);
}
public static Date getMinDate(int year, int month, int day, int hour, int minute, int second) {
return getDate(year, month, day, hour, minute, second, false);
}
public static Date getMinDate(int year, int month, int day, int hour, int minute) {
return getDate(year, month, day, hour, minute, false);
}
public static Date getMinDate(int year, int month, int day, int hour) {
return getDate(year, month, day, hour, false);
}
public static Date getMinDate(int year, int month, int day) {
return getDate(year, month, day, false);
}
public static Date getMinDate(int year, int month) {
return getDate(year, month, false);
}
public static Date getMinDate(int year) {
return getDate(year, false);
}
public static Date getMinDate(int type, Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
switch (type) {
case Calendar.MONTH:
cal.set(Calendar.MONTH, cal.getActualMinimum(Calendar.MONTH));
case Calendar.DATE:
cal.set(Calendar.DATE, cal.getActualMinimum(Calendar.DATE));
case Calendar.HOUR:
cal.set(Calendar.HOUR_OF_DAY, cal.getActualMinimum(Calendar.HOUR_OF_DAY));
case Calendar.MINUTE:
cal.set(Calendar.MINUTE, cal.getActualMinimum(Calendar.MINUTE));
case Calendar.SECOND:
cal.set(Calendar.SECOND, cal.getActualMinimum(Calendar.SECOND));
cal.set(Calendar.MILLISECOND, cal.getActualMinimum(Calendar.MILLISECOND));
default:
break;
}
return convertTo(cal.getTime());
}
public static Date getMaxDate(int type, Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
switch (type) {
case Calendar.MONTH:
cal.set(Calendar.MONTH, cal.getActualMaximum(Calendar.MONTH));
case Calendar.DATE:
cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE));
case Calendar.HOUR:
cal.set(Calendar.HOUR_OF_DAY, cal.getActualMaximum(Calendar.HOUR_OF_DAY));
case Calendar.MINUTE:
cal.set(Calendar.MINUTE, cal.getActualMaximum(Calendar.MINUTE));
case Calendar.SECOND:
cal.set(Calendar.SECOND, cal.getActualMaximum(Calendar.SECOND));
cal.set(Calendar.MILLISECOND, cal.getActualMaximum(Calendar.MILLISECOND));
default:
break;
}
return convertTo(cal.getTime());
}
public static String getMinDateThisMonth() {
return getMinDate(Calendar.DATE,getToday()).toString();
}
public static Date getMinDateThisMonthDate() {
return getMinDate(Calendar.DATE,getToday());
}
public static String getMaxDateThisMonth() {
return getMaxDate(Calendar.DATE,getToday()).toString();
}
public static Date getMaxDateThisMonthDate() {
return getMaxDate(Calendar.DATE,getToday());
}
public static Date getMinDate(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, cal.getActualMinimum(Calendar.HOUR_OF_DAY));
cal.set(Calendar.MINUTE, cal.getActualMinimum(Calendar.MINUTE));
cal.set(Calendar.SECOND, cal.getActualMinimum(Calendar.SECOND));
cal.set(Calendar.MILLISECOND, cal.getActualMinimum(Calendar.MILLISECOND));
return convertTo(cal.getTime());
}
public static Date getMaxDate(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, cal.getActualMaximum(Calendar.HOUR_OF_DAY));
cal.set(Calendar.MINUTE, cal.getActualMaximum(Calendar.MINUTE));
cal.set(Calendar.SECOND, cal.getActualMaximum(Calendar.SECOND));
cal.set(Calendar.MILLISECOND, cal.getActualMaximum(Calendar.MILLISECOND));
return convertTo(cal.getTime());
}
/**
* 根据当月,得到开始一天和最后一天.
*
* @param monthStr the month str
*
* @return the start and end day this month
*/
public static StartEndDayMonth getStartAndEndDayThisMonth(String year,String month) {
String yearMonthStr = year + "-" + month;
return getStartAndEndDayThisMonth(yearMonthStr);
}
public static Date getStartDayThisYear(String year) {
String dateStr = year + "-1-1";
return parse(dateStr);
}
/**
* 根据当月,得到开始一天和最后一天.
*
* @param monthStr the month str
*
* @return the start and end day this month
*/
public static StartEndDayMonth getStartAndEndDayThisMonth(String yearMonthStr) {
Date[] result = new Date[2];
Calendar calendar = Calendar.getInstance();
yearMonthStr = yearMonthStr + "-1";
calendar.setTime(convertTo(parse(yearMonthStr)));
calendar.set(Calendar.DATE, 1);
java.util.Date start = calendar.getTime();
result[0] = convertTo(start);
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
java.util.Date end = calendar.getTime();
result[1] = convertTo(end);
StartEndDayMonth sed = new StartEndDayMonth();
sed.setFirstDay(result[0]);
sed.setEndDay(result[1]);
return sed;
}
public static QuaterDateOfYear getQuaterDay(String year) {
QuaterDateOfYear result = new QuaterDateOfYear();
String month = year + "-" + "01";
result.setQ1FirstDay(getStartAndEndDayThisMonth(month).getFirstDay());
month = year + "-" + "03";
result.setQ1EndDay(getStartAndEndDayThisMonth(month).getEndDay());
month = year + "-" + "04";
result.setQ2FirstDay(getStartAndEndDayThisMonth(month).getFirstDay());
month = year + "-" + "06";
result.setQ2EndDay(getStartAndEndDayThisMonth(month).getEndDay());
month = year + "-" + "07";
result.setQ3FirstDay(getStartAndEndDayThisMonth(month).getFirstDay());
month = year + "-" + "09";
result.setQ3EndDay(getStartAndEndDayThisMonth(month).getEndDay());
month = year + "-" + "10";
result.setQ4FirstDay(getStartAndEndDayThisMonth(month).getFirstDay());
month = year + "-" + "12";
result.setQ4EndDay(getStartAndEndDayThisMonth(month).getEndDay());
return result;
}
public static void main(String args[]) {
//System.out.println(parse("20.11-2007","dd.MM.yyyy" ));
//System.out.println(getMaxDateThisMonth());
//System.out.println(parseMonth("2007-07"));
//Calendar.AUGUST
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -