/**
* 从java.sql.Timestamp Object 中取出Weekday value,即星期几
*
* @param timestamp ,
* java.sql.Timestamp Object
* @return weekday value (1-7即周日到周六)
*/
public static int getWeekdayOfTimestamp(java.sql.Timestamp timestamp) {
GregorianCalendar obj = DateUtil.convertToCalendar(timestamp);
return obj.get(GregorianCalendar.DAY_OF_WEEK);
}
------------------------------------------------------------------------------------------------------------------
System.out.println(getWeekdayOfTimestamp(new Timestamp(stringToDate("20130209","yyyyMMdd").getTime())));
输出:7
------------------------------------------------------------------------------------------------------------------
/**
* 在java.sql.Timestamp Object上增加/减少几天
*
* @param timestamp
* java.sql.Timestamp instance
* @param days
* 增加/减少的天数
* @return java.sql.Timestamp Object
*/
public static final long DAY_MILLI = 24 * 60 * 60 * 1000;
public static java.sql.Timestamp addDays(java.sql.Timestamp timestamp,
int days) {
java.util.Date date = DateUtil.convertTimestampToDate(timestamp);
long temp = date.getTime();
return new java.sql.Timestamp(temp + DateUtil.DAY_MILLI * days);
}
------------------------------------------------------------------------------------------------------------------
date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse("2008-05-01 12:23");
date2 = new SimpleDateFormat("yyyy-MM-dd").parse("2008-05-01");
System.out.println(addDays(new Timestamp(date1.getTime()),3));
System.out.println(addDays(new Timestamp(date2.getTime()),3));
输出:
2008-05-04 12:23:00.0
2008-05-04 00:00:00.0
------------------------------------------------------------------------------------------------------------------
/**
* 取得指定日期所在周的第一天(Sunday)
*
* @param timestamp ,
* java.sql.Timestamp Object
* @return java.sql.Timestamp instance
*/
public static java.sql.Timestamp getFirstDayOfWeek(
java.sql.Timestamp timestamp) {
int no = DateUtil.getWeekdayOfTimestamp(timestamp);
java.sql.Timestamp out = DateUtil.addDays(timestamp, 1 - no);
return out;
}
------------------------------------------------------------------------------------------------------------------
date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse("2008-05-01 12:23");
date2 = new SimpleDateFormat("yyyy-MM-dd").parse("2008-05-01");
System.out.println(addDays(new Timestamp(date1.getTime()),3));
System.out.println(addDays(new Timestamp(date2.getTime()),3));
输出:
2008-04-27 12:23:00.0
2008-04-27 00:00:00.0
------------------------------------------------------------------------------------------------------------------
/**
* 取得指定日期所在周的最后一天(Saturday)
*
* @param timestamp ,
* java.sql.Timestamp Object
* @return java.sql.Timestamp instance
*/
public static java.sql.Timestamp getLastDayOfWeek(
java.sql.Timestamp timestamp) {
int no = DateUtil.getWeekdayOfTimestamp(timestamp);
java.sql.Timestamp out = DateUtil.addDays(timestamp, 7 - no);
return out;
}
------------------------------------------------------------------------------------------------------------------
date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse("2008-05-01 12:23");
date2 = new SimpleDateFormat("yyyy-MM-dd").parse("2008-05-01");
System.out.println(getLastDayOfWeek(new Timestamp(date1.getTime())));
System.out.println(getLastDayOfWeek(new Timestamp(date2.getTime())));
输出:
2008-05-03 12:23:00.0
2008-05-03 00:00:00.0
------------------------------------------------------------------------------------------------------------------
/***************************************************************************
* 把java.sql.Timestamp Object 取出各部分的值
**************************************************************************/
/**
* 从java.sql.Timestamp Object 中取出Year value(年)
*
* @param timestamp ,
* java.sql.Timestamp Object
* @return year value
*/
public static int getYearOfTimestamp(java.sql.Timestamp timestamp) {
GregorianCalendar obj = DateUtil.convertToCalendar(timestamp);
return obj.get(GregorianCalendar.YEAR);
}
/**
* 从java.sql.Timestamp Object 中取出month value(月)
*
* @param timestamp ,
* java.sql.Timestamp Object
* @return month value(1 -- 12 )
*/
public static int getMonthOfTimestamp(java.sql.Timestamp timestamp) {
GregorianCalendar obj = DateUtil.convertToCalendar(timestamp);
return (obj.get(GregorianCalendar.MONTH) + 1);
}
/**
* 从java.sql.Timestamp Object 中取出day-of-month value(日)
*
* @param timestamp ,
* java.sql.Timestamp Object
* @return day value
*/
public static int getDayOfTimestamp(java.sql.Timestamp timestamp) {
GregorianCalendar obj = DateUtil.convertToCalendar(timestamp);
return obj.get(GregorianCalendar.DAY_OF_MONTH);
}
/**
* 从java.sql.Timestamp Object 中取出Weekday value(星期几+1)
*
* @param timestamp ,
* java.sql.Timestamp Object
* @return weekday value
*/
public static int getWeekdayOfTimestamp(java.sql.Timestamp timestamp) {
GregorianCalendar obj = DateUtil.convertToCalendar(timestamp);
return obj.get(GregorianCalendar.DAY_OF_WEEK);
}
/**
* 返回当天零时的Timestamp值
*
* @param timestamp
* java.sql.Timestamp Object
* @return Zero time Timestamp
*/
public static java.sql.Timestamp getZeroTime(java.sql.Timestamp timestamp) {
String tempStr = timestamp.toString().substring(0, 10);
return DateUtil.toSqlTimestamp(tempStr);
}
------------------------------------------------------------------------------------------------------------------
date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse("2008-05-01 12:23");
date2 = new SimpleDateFormat("yyyy-MM-dd").parse("2008-05-01");
System.out.println(getZeroTime(new Timestamp(date1.getTime())));
System.out.println(getZeroTime(new Timestamp(date2.getTime())));
输出:
2008-05-01 00:00:00.0
2008-05-01 00:00:00.0
------------------------------------------------------------------------------------------------------------------
/**
* 从java.sql.Timestamp Object 中取出hour:minute
*
* @param timestamp ,
* java.sql.Timestamp Object
* @return Hour:Minute format string
*/
public static String getHourAndMinuteString(java.sql.Timestamp timestamp) {
String out = null;
GregorianCalendar obj = DateUtil.convertToCalendar(timestamp);
int hour = obj.get(GregorianCalendar.HOUR_OF_DAY);
int minute = obj.get(GregorianCalendar.MINUTE);
if (minute < 10) {
out = String.valueOf(hour) + ":0" + String.valueOf(minute);
} else {
out = String.valueOf(hour) + ":" + String.valueOf(minute);
}
return out;
}
/**
* 从java.sql.Timestamp Object 中取出hour value
*
* @param timestamp ,
* java.sql.Timestamp Object
* @return 24小时制的hour value
*/
public static int getHourOfTimestamp(java.sql.Timestamp timestamp) {
GregorianCalendar obj = DateUtil.convertToCalendar(timestamp);
return obj.get(GregorianCalendar.HOUR_OF_DAY);
}
/**
* 从java.sql.Timestamp Object 中取出minute value
*
* @param timestamp ,
* java.sql.Timestamp Object
* @return minute value
*/
public static int getMinuteOfTimestamp(java.sql.Timestamp timestamp) {
GregorianCalendar obj = DateUtil.convertToCalendar(timestamp);
return obj.get(GregorianCalendar.MINUTE);
}
/**
* 从java.sql.Timestamp Object 中取出second value
*
* @param timestamp ,
* java.sql.Timestamp Object
* @return minute value
*/
public static int getSecondOfTimestamp(java.sql.Timestamp timestamp) {
GregorianCalendar obj = DateUtil.convertToCalendar(timestamp);
return obj.get(GregorianCalendar.SECOND);
}
/**
* 把java.sql.Timestamp Object 转换为java.util.GregorianCalendar Object
*
* @param timestamp ,
* java.sql.Timestamp Object
* @return java.util.GregorianCalendar Object
* @deprecated please use confertToCalendar(java.sql.Timestamp)
*/
public static java.util.GregorianCalendar convertTimestampToCalendar(
java.sql.Timestamp timestamp) {
return convertToCalendar(timestamp);
}
/**
* 把java.sql.Timestamp Object 转换为java.util.GregorianCalendar Object
*
* @param timestamp ,
* java.sql.Timestamp Object
* @return java.util.GregorianCalendar Object
*/
public static java.util.GregorianCalendar convertToCalendar(
java.sql.Timestamp timestamp) {
GregorianCalendar obj = new GregorianCalendar();
obj.setTime(DateUtil.convertTimestampToDate(timestamp));
// 下面的method不能用,long ==> int 精度不对
// obj.set(GregorianCalendar.MILLISECOND , (int)timestamp.getTime() );
return obj;
}
/**
* 把java.sql.Timestamp Object 转换为java.util.Date Object
*
* @param timestamp ,
* java.sql.Timestamp Object
* @return java.util.Date Object
*/
public static java.util.Date convertTimestampToDate(
java.sql.Timestamp timestamp) {
java.util.Date date = null;
date = new Date(timestamp.getTime());
return date;
}
/**
* util.date 转换为 sql.date
*
* @return
*/
public static java.sql.Date dateChange(java.util.Date date) {
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
return sqlDate;
}
/**
* 将指定的java.sql.Timestamp类型的转变为指定的中文日期格式
*
* @param timestamp
* 待转换时间
* @return String
*/
public static String convertTimestampToChinaCalendar(Timestamp timestamp) {
StringBuffer sb = new StringBuffer();
if (timestamp == null) {
sb.append(" ");
} else {
sb = new StringBuffer();
sb.append(DateUtil.getYearOfTimestamp(timestamp));
sb.append("年");
sb.append(DateUtil.getMonthOfTimestamp(timestamp));
sb.append("月");
sb.append(DateUtil.getDayOfTimestamp(timestamp));
sb.append("日");
sb.append(" ");
sb.append(DateUtil.getHourOfTimestamp(timestamp));
sb.append(":");
if (DateUtil.getMinuteOfTimestamp(timestamp) < 10) {
sb.append(0);
sb.append(DateUtil.getMinuteOfTimestamp(timestamp));
} else {
sb.append(DateUtil.getMinuteOfTimestamp(timestamp));
}
sb.append(":");
if (DateUtil.getSecondOfTimestamp(timestamp) < 10) {
sb.append(0);
sb.append(DateUtil.getSecondOfTimestamp(timestamp));
} else {
sb.append(DateUtil.getSecondOfTimestamp(timestamp));
}
}
return sb.toString();
}
------------------------------------------------------------------------------------------------------------------
date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse("2008-05-01 12:23");
date2 = new SimpleDateFormat("yyyy-MM-dd").parse("2008-05-01");
System.out.println(convertTimestampToChinaCalendar(new Timestamp(date1.getTime())));
System.out.println(convertTimestampToChinaCalendar(new Timestamp(date2.getTime())));
输出:
2008年5月1日 12:23:00
2008年5月1日 0:00:00
------------------------------------------------------------------------------------------------------------------
/**
* 根据指定的格式转换java.sql.Timestamp到String
*
* @param dt
* java.sql.Timestamp instance
* @param sFmt
* Date
* 格式,DATE_FORMAT_DATEONLY/DATE_FORMAT_DATETIME/DATE_FORMAT_SESSION
* @return String
*/
public static String toSqlTimestampString(java.sql.Timestamp dt, String sFmt) {
String temp = null;
String out = null;
if (dt == null || sFmt == null)
return null;
temp = dt.toString();
if (sFmt.equals(DateUtil.DATE_FORMAT_DATETIME) || // "YYYY/MM/DD
// HH24:MI:SS"
sFmt.equals(DateUtil.DATE_FORMAT_DATEONLY)) { // YYYY/MM/DD
temp = temp.substring(0, sFmt.length());
out = temp.replace('-', '/');
}
return out;
}
/**
* 转换java.sql.Timestamp到HH24:MI String
*
* @param dt
* java.sql.Timestamp instance
* @return String
*/
public static String toHourMinString(java.sql.Timestamp dt) {
String temp = null;
temp = dt.toString();
// int len = 0;
// len = DateUtil.DATE_FORMAT_DATETIME.length ();
temp = temp.substring(11, 16);
return temp;
}
/**
* 取得指定日期所在月的最后一天
*
* @param timestamp ,
* java.sql.Timestamp Object
* @return java.sql.Timestamp instance
*/
public static int[] DAY_OF_MONTH_LEAP_YEAR = { 31, 29, 31, 30, 31, 30, 31,
31, 30, 31, 30, 31 };
public static int[] DAY_OF_MONTH_NON_LEAP_YEAR = { 31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31 };
/***************************************************************************
* java.sql.Timestamp +/- 几天的计算函数
**************************************************************************/
/**
* 判断指定的日期是否是一个月的最后一天
*
* @param obj
* 时间对象
* @return true 是 false 否
*/
private static boolean isLastDayOfMonth(GregorianCalendar obj) {
int year = obj.get(GregorianCalendar.YEAR);
int month = obj.get(GregorianCalendar.MONTH) + 1;
int day = obj.get(GregorianCalendar.DAY_OF_MONTH);
if (obj.isLeapYear(year)) {
if (day == DateUtil.DAY_OF_MONTH_LEAP_YEAR[month - 1])
return true;
} else {
if (day == DateUtil.DAY_OF_MONTH_NON_LEAP_YEAR[month - 1])
return true;
}
return false;
}
/**
* 在java.sql.Timestamp Object上增加/减少几个月
*
* @param timestamp
* java.sql.Timestamp instance
* @param mon
* 增加/减少的月数
* @return java.sql.Timestamp Object
*/
public static java.sql.Timestamp addMonths(java.sql.Timestamp timestamp,
int mon) {
java.sql.Timestamp out = null;
GregorianCalendar obj = DateUtil.convertToCalendar(timestamp);
// month : 0 -- 11
int year = obj.get(GregorianCalendar.YEAR);
int month = obj.get(GregorianCalendar.MONTH) + 1;
int day = obj.get(GregorianCalendar.DAY_OF_MONTH);
month += mon;
if (month < 1) {
month += 12;
year--;
} else if (month > 12) {
month -= 12;
year++;
}
if (isLastDayOfMonth(obj)) {
if (obj.isLeapYear(year)) {
day = DateUtil.DAY_OF_MONTH_LEAP_YEAR[month - 1];
} else {
day = DateUtil.DAY_OF_MONTH_NON_LEAP_YEAR[month - 1];
}
}
String temp = DateUtil.formatYMD(year, month, day);
out = DateUtil.toSqlTimestamp(temp);
return out;
}