关于日期时间操作工具类DateUtil(二) -----对java.sql.Timestamp 的操作.

 /**
  * 从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("&nbsp");
  } 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;
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值