常用的与时间戳(Timestamp)相关的函数总结TimestampUtil

TimestampUtil.java

package util;

import java.sql.Timestamp;
import java.util.Calendar;

public class TimestampUtil {
 public final static int YEAR=1;
 public final static int MONTH=2;
 public final static int DAY=3;
 public final static int HOUR=4;
 public final static int MINUTE=5;
 public final static int SECOND=6;
 public final static int WEEK=7;
 public final static int MILLISECOND=8;
 public final static int CENTURY=9;
 public final static int SUNDAY=Calendar.SUNDAY;
 public final static int MONDAY=Calendar.MONDAY;
 public final static int WEDNESDAY=Calendar.WEDNESDAY;
 public final static int TUESDAY=Calendar.TUESDAY;
 public final static int THURSDAY=Calendar.THURSDAY;
 public final static int FRIDAY=Calendar.FRIDAY;
 public final static int SATURDAY=Calendar.SATURDAY;
 //获取若干偏移量的时间戳(Timestamp),参数一为操作时间戳(Timestamp),参数二为偏移单位,参数三为偏移值
 public static Timestamp getTiemstamp(Timestamp operTime, int unit, int value) {
  if (operTime==null) return null;
  Calendar c = Calendar.getInstance();
  c.setTime(operTime);
  Timestamp newTime=null;
  switch(unit)
  {
  case YEAR:
   c.set(Calendar.YEAR, c.get(Calendar.YEAR) + value);
   newTime=new Timestamp(c.getTimeInMillis());
   break;
  case MONTH:
   c.set(Calendar.MONTH, c.get(Calendar.MONTH) + value);
   newTime=new Timestamp(c.getTimeInMillis());
   break;
  case DAY:
   c.set(Calendar.DATE, c.get(Calendar.DATE) + value);
   newTime=new Timestamp(c.getTimeInMillis());
   break;
  case HOUR:
   c.set(Calendar.HOUR, c.get(Calendar.HOUR) + value);
   newTime=new Timestamp(c.getTimeInMillis());
   break;
  case MINUTE:
   c.set(Calendar.MINUTE, c.get(Calendar.MINUTE) + value);
   newTime=new Timestamp(c.getTimeInMillis());
   break;
  case SECOND:
   c.set(Calendar.SECOND, c.get(Calendar.SECOND) + value);
   newTime=new Timestamp(c.getTimeInMillis());
   break;
  case WEEK:
   c.set(Calendar.DATE, c.get(Calendar.DATE) + 7*value);
   newTime=new Timestamp(c.getTimeInMillis());
   break;
  case MILLISECOND:
   c.set(Calendar.MILLISECOND, c.get(Calendar.MILLISECOND) + value);
   newTime=new Timestamp(c.getTimeInMillis());
   break;
  case CENTURY:
   c.set(Calendar.YEAR, c.get(Calendar.YEAR) + 100*value);
   newTime=new Timestamp(c.getTimeInMillis());
   break;
  default:break;
  }
  return  newTime;
 }
 
 
 //获取若干偏移量的时间戳(Timestamp),参数一为操作时间戳(Timestamp),参数二为偏移单位,参数三为偏移值,参数四标记是否获取该天开始那一刻,参数五标记是否获取该天结束那一刻(参数四优先参数五)
 public static Timestamp getTiemstamp(Timestamp operTime, int unit, int value,
   boolean fromStart, boolean toEnd) {
  if (operTime==null) return null;
  Calendar c = Calendar.getInstance();
  c.setTime(getTiemstamp( operTime,unit,value));
  if (fromStart) {
   c.set(Calendar.HOUR, 0);
   c.set(Calendar.MINUTE, 0);
   c.set(Calendar.SECOND, 0);
  }
  else
  { 
  if (toEnd) {
   c.set(Calendar.HOUR, 23);
   c.set(Calendar.MINUTE, 59);
   c.set(Calendar.SECOND, 59);
  }
  }
  return new Timestamp(c.getTimeInMillis());
 }
 
 //获取精度到指定单位的时间戳字符串
 public static String getTimestampString(Timestamp operTime,int unit)
 {
  if(operTime!=null)
  {
   String str="N/A";
   switch(unit)
   {
   case YEAR:
    str=operTime.toString().substring(0,4);
   case MONTH:
    str=operTime.toString().substring(0,7);
    break;
   case DAY:
    str=operTime.toString().substring(0,10);
    break;
   case HOUR:
    str=operTime.toString().substring(0,13);
    break;
   case MINUTE:
    str=operTime.toString().substring(0,16);
    break;
   case SECOND:
    str= operTime.toString().substring(0,19);
    break;
   case MILLISECOND:
    str= operTime.toString();
    break;
   default:break;
   }
   return str;
  }
  return "N/A";
 }
 
 //判断两个时间戳(Timestamp)是否在同一天
 public static boolean isTheSameDate(Timestamp time1,Timestamp time2 ) 
 {
  if(time1!=null&&time2!=null){
  Calendar c1=Calendar.getInstance();
  c1.setTime(time1);
  int y1=c1.get(Calendar.YEAR);
  int m1=c1.get(Calendar.MONTH);
  int d1=c1.get(Calendar.DATE);
  Calendar c2=Calendar.getInstance();
  c2.setTime(time2);
  int y2=c2.get(Calendar.YEAR);
  int m2=c2.get(Calendar.MONTH);
  int d2=c2.get(Calendar.DATE);
  if(y1==y2&&m1==m2&&d1==d2)
  {
   return true;
  }
  }
  else
  {
   if(time1==null&&time2==null)
   {
    return true;
   }
  }
  return false;
 }
 
 //获取操作时间戳(Timestamp)所在周的一天,其顺序为:星期天,一,二,三,四,五,六
 public static Timestamp getDayOfWeek(Timestamp operTime,int day)
 {
  if(operTime!=null&&day>0&&day<=7)
  {
  Calendar c=Calendar.getInstance();
  c.setTime(operTime);
  c.set(Calendar.DAY_OF_WEEK, day);
  return new Timestamp(c.getTimeInMillis());
  }
  return null;
   
 }
}

//功能注释已经说明,不在累赘。继续总结中,热烈欢迎各位朋友来此讨论
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值