📄 dateutil.java
字号:
package com;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
public class DateUtil {
public DateUtil() {
}
/**
* 转换日期格式
*
* @param 正确日期格式为
* yyyy-mm-dd 00:00:00
* @return
*/
public static Date parseDate(String date) throws SysException {
Date ret = null;
if (date == null || date.length()==0) {
return null;
}
DateFormat df = null;
if (date.indexOf(" ") > 0) { // 日期&时间
if (date.split(":").length == 2) {
date += ":00";
}
df = DateFormat.getDateTimeInstance(2, 2, Locale.CHINA);
} else { // 日期
df = DateFormat.getDateInstance(2, Locale.CHINA);
}
try {
ret = df.parse(date);
} catch (ParseException pe) {
throw new SysException("APP-1003", "APP", "录入的日期格式错误",
DateUtil.class.getName() + ":parseDate()", null, pe,
"字符串转日期类型异常");
}
return ret;
}
public static String toString(Date date) {
if (date == null) {
return "";
}
DateFormat df = DateFormat.getDateInstance(2, Locale.CHINA);
String ret = df.format(date);
return ret;
}
public static String toString(Date date, boolean hasTime) {
if (date == null) {
return "";
}
DateFormat df = null;
if (hasTime) {
df = DateFormat.getDateTimeInstance(2, 2, Locale.CHINA);
} else {
df = DateFormat.getDateInstance(2, Locale.CHINA);
}
String ret = df.format(date);
return ret;
}
/**
* @param date
* @param iDays
* 间隔天数
* @param hasTime
* @return
*/
public static String toString(Date date, int iDays, boolean hasTime) {
String ret = "";
if (date == null) {
return "";
}
Calendar ca = Calendar.getInstance();
ca.setTime(date);
ca.add(Calendar.DAY_OF_YEAR, iDays);
ret = toDayString(ca, hasTime);
return ret;
}
public static String toString(Date date, boolean hasTime, boolean hasYear) {
if (date == null) {
return "";
}
DateFormat df = null;
if (hasTime) {
df = DateFormat.getDateTimeInstance(2, 2, Locale.CHINA);
} else {
df = DateFormat.getDateInstance(3, Locale.CHINA);
}
String ret = df.format(date);
return ret;
}
public static String toDayString(Calendar ca, boolean hasTime) {
if (ca == null) {
return "";
}
String ret = "";
String sDate = "";
String sTime = "";
int iTemp = 0;
iTemp = ca.get(Calendar.MONTH) + 1;
if (iTemp < 10) {
sDate = ca.get(Calendar.YEAR) + "-0" + iTemp;
} else {
sDate = ca.get(Calendar.YEAR) + "-" + iTemp;
}
iTemp = ca.get(Calendar.DAY_OF_MONTH);
if (iTemp < 10) {
sDate = sDate + "-0" + iTemp;
} else {
sDate = sDate + "-" + iTemp;
}
iTemp = ca.get(Calendar.HOUR_OF_DAY);
if (iTemp < 10) {
sTime = "0" + iTemp;
} else {
sTime = "" + iTemp;
}
iTemp = ca.get(Calendar.MINUTE);
if (iTemp < 10) {
sTime = sTime + ":" + "0" + iTemp;
} else {
sTime = sTime + ":" + iTemp;
}
iTemp = ca.get(Calendar.SECOND);
if (iTemp < 10) {
sTime = sTime + ":" + "0" + iTemp;
} else {
sTime = sTime + ":" + iTemp;
}
if (hasTime) {
ret = sDate + " " + sTime;
} else {
ret = sDate;
}
return ret;
}
/* 产生时间选择框 */
public static String getSelect(List collection, String name,
String onchange, String selected, String attach) {
StringBuffer ret = new StringBuffer();
if ((collection == null) || (collection.size() == 0)) {
return ret.toString();
}
ret.append(" <select name=\"" + name + "\"");
if (onchange != null) {
ret.append(" onchange=\"" + onchange + "\"");
}
ret.append(">\n");
String tmp = "";
for (int i = 0; i < collection.size(); i++) {
tmp = (String) collection.get(i);
ret.append(" <option value=\"");
ret.append(tmp);
ret.append("\"");
if (tmp.equals(selected)) {
ret.append(" selected ");
}
ret.append(">");
ret.append(tmp);
ret.append("</option>\n");
}
ret.append(" </select>");
if (attach != null) {
ret.append(attach);
}
ret.append("\n");
return ret.toString();
}
public static String getHourSelect(String name) {
Date now = new Date();
return DateUtil.getHourSelect(name, now.getHours());
}
/**
* 产生小时选择列表
*
* @param name
* 名称
* @param selected
* 选中值
* @return
*/
public static String getHourSelect(String name, int selected) {
return DateUtil.getHourSelect(name, selected, "");
}
/**
* 产生小时选择列表
*
* @param name
* 名称
* @param selected
* 选中值
* @param onchange
* @return
*/
public static String getHourSelect(String name, int selected,
String onchange) {
StringBuffer ret = new StringBuffer();
ret.append(" <select name=\"" + name + "\" ");
if (onchange != null && !onchange.equals("")) {
ret.append(" onchange=\"" + onchange + "\"");
}
ret.append(" class=\"c1\">\n");
String tmp = "";
for (int i = 8; i < 21; i++) {
if (i < 10) {
tmp = "0" + i;
} else {
tmp = String.valueOf(i);
}
ret.append(" <option value=\"");
ret.append(tmp + "\"");
if (i == selected) {
ret.append(" selected ");
}
ret.append(">");
ret.append(tmp);
ret.append("</option>\n");
}
ret.append("</select>");
ret.append("\n");
return ret.toString();
}
public static String getMinutesSelect(String name) {
Date now = new Date();
return DateUtil.getMinutesSelect(name, now.getMinutes());
}
public static String getMinutesSelect(String name, int selected) {
Date now = new Date();
return DateUtil.getMinutesSelect(name, selected, "");
}
/**
* 产生分钟选择列表
*
* @param name
* 名称
* @param selected
* 选中值
* @return
*/
public static String getMinutesSelect(String name, int selected,
String onchange) {
StringBuffer ret = new StringBuffer();
ret.append(" <select name=\"" + name + "\" ");
if (onchange != null && !onchange.equals("")) {
ret.append(" onchange=\"" + onchange + "\"");
}
ret.append(" class=\"c1\">\n");
String tmp = "";
for (int i = 0; i < 60; i += 5) {
if (i < 10) {
tmp = "0" + i;
} else {
tmp = String.valueOf(i);
}
ret.append(" <option value=\"");
ret.append(tmp + "\"");
if ((i - 5) < selected && selected <= i) {
ret.append(" selected ");
}
ret.append(">");
ret.append(tmp);
ret.append("</option>\n");
}
ret.append("</select>");
ret.append("\n");
return ret.toString();
}
public static int getDays(String date1, String date2) throws SysException {
Date sd = DateUtil.parseDate(date1);
Date ed = DateUtil.parseDate(date2);
return DateUtil.getDays(sd, ed);
}
public static int getDays(Date sd, Date ed) {
long tmp = ed.getTime() - sd.getTime();
if (tmp != 0) {
tmp = tmp / (1000 * 60 * 60 * 24);
}
tmp++;
return (int) tmp;
}
public static void main(String[] args) {
try {
// System.out.println(DateUtil.getMinutesSelect("hour"));
// System.out.println(DateUtil.toString(new Date(),true));
// System.out.println(DateUtil.getLastDayofMonth("2007-2-1"));
// System.out.println(DateUtil.compareDate("2007-3-2","2007-3-2"));
//String tmp = "2007-03-0001";
//tmp = tmp.substring(0, 7);
//System.out.println(tmp);
//Calendar cNow = Calendar.getInstance();
//System.out.println(cNow.get(Calendar.WEEK_OF_YEAR));
//DateUtil.getPeriodForWeek("", 0);
Calendar cNow = Calendar.getInstance();
cNow.setTime(DateUtil.parseDate("2007-4-30"));
cNow.add(Calendar.MONTH, -1);
//System.out.println(DateUtil.toDayString(cNow, false));
System.out.println(DateUtil.parseDate(""));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取某个日期所在月的最后一天
*
* @param date
* @return
* @throws SysException
*/
public static String getLastDayofMonth(String date) throws SysException {
String ret = "";
Date start = DateUtil.parseDate(date);
Calendar c = Calendar.getInstance();
c.setTime(start);
c.add(Calendar.MONTH, 1);
c.set(Calendar.DATE, 1);
c.add(Calendar.DATE, -1);
ret = DateUtil.toDayString(c, false);
return ret;
}
/**
* 获取某个日期所在月的最后一天,如果最后一天晚于日期end,则最后一天就为end
*
* @param date
* @param end
* @return
* @throws SysException
*/
public static String getLastDayofMonth(String date, String end)
throws SysException {
String ret = "";
Date start = DateUtil.parseDate(date);
Calendar c = Calendar.getInstance();
c.setTime(start);
c.add(Calendar.MONTH, 1);
c.set(Calendar.DATE, 1);
c.add(Calendar.DATE, -1);
Calendar ec = Calendar.getInstance();
ec.setTime(DateUtil.parseDate(end));
if (c.after(ec)) {
ret = DateUtil.toDayString(ec, false);
} else {
ret = DateUtil.toDayString(c, false);
}
return ret;
}
public static int compareDate(String start, String end) throws SysException {
Date sd = DateUtil.parseDate(start);
return sd.compareTo(DateUtil.parseDate(end));
}
public static String[] getPeriodForWeek(String date, int addWeek)
throws SysException {
String[] period = new String[3];
if (date != null && date.length()>0) {
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, addWeek*7);
date = DateUtil.toDayString(c, false);
}
Calendar ca = Calendar.getInstance();
ca.setTime(DateUtil.parseDate(date));
int day = ca.get(Calendar.DAY_OF_WEEK)-1;
if(day == 0) {
day = 7;
}
ca.add(Calendar.DATE, 1-day);
period[0] = DateUtil.toDayString(ca, false);
ca.add(Calendar.DATE, 6);
period[1] = DateUtil.toDayString(ca, false);
period[2] = date;
return period;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -