android 阶段性日期的获取,向前或者向后推一段时间

在开发中经常遇到日期的选择,同时需要有效的显示开始日期跟结束日期,同时在起始日期之间有一个固定的间隔天数,如订酒店或者机票界面中的起始时间的显示,要求结束时间在开始时间后3天,如:开始时间为2014-06-30,结束时间则为2014-07-02.

在android中有一个很简单的方法可以实现:

final Calendar c = Calendar.getInstance();

         mCurrentDay = c.get(Calendar.DAY_OF_MONTH) ;  

        c.set(Calendar.DAY_OF_MONTH,mDay+3); 
        mDay = c.get(Calendar.DAY_OF_MONTH);

以上则可以实现间隔日期的计算了,对于间隔时间也是可以这样实现,相当简单,对于润年也没有问题。


参考资料:

http://hi.baidu.com/laoyang1018/item/8b12bdd070b7de95260ae7b5


public long getLongTime(char dateType) {
Calendar c = Calendar.getInstance(); // 当时的日期和时间
int hour; // 需要更改的小时
int day; // 需要更改的天数

switch (dateType) {
case '0': // 1小时前
hour = c.get(Calendar.HOUR_OF_DAY) - 1;
c.set(Calendar.HOUR_OF_DAY, hour);
// System.out.println(df.format(c.getTime()));
break;
case '1': // 2小时前
hour = c.get(Calendar.HOUR_OF_DAY) - 2;
c.set(Calendar.HOUR_OF_DAY, hour);
// System.out.println(df.format(c.getTime()));
break;
case '2': // 3小时前
hour = c.get(Calendar.HOUR_OF_DAY) - 3;
c.set(Calendar.HOUR_OF_DAY, hour);
// System.out.println(df.format(c.getTime()));
break;
case '3': // 6小时前
hour = c.get(Calendar.HOUR_OF_DAY) - 6;
c.set(Calendar.HOUR_OF_DAY, hour);
// System.out.println(df.format(c.getTime()));
break;
case '4': // 12小时前
hour = c.get(Calendar.HOUR_OF_DAY) - 12;
c.set(Calendar.HOUR_OF_DAY, hour);
// System.out.println(df.format(c.getTime()));
break;
case '5': // 一天前
day = c.get(Calendar.DAY_OF_MONTH) - 1;
c.set(Calendar.DAY_OF_MONTH, day);
// System.out.println(df.format(c.getTime()));
break;
case '6': // 一星期前
day = c.get(Calendar.DAY_OF_MONTH) - 7;
c.set(Calendar.DAY_OF_MONTH, day);
// System.out.println(df.format(c.getTime()));
break;
case '7': // 一个月前
day = c.get(Calendar.DAY_OF_MONTH) - 30;
c.set(Calendar.DAY_OF_MONTH, day);
// System.out.println(df.format(c.getTime()));
break;
}

return c.getTimeInMillis();
}

 

 

    /**
  * 获取阶段日期
  * @param  dateType
  * @author Yangtse 
  */
    //使用方法 char datetype = '7';
    public static StringBuilder getPeriodDate(char dateType) {
  Calendar c = Calendar.getInstance(); // 当时的日期和时间
  int hour; // 需要更改的小时
  int day; // 需要更改的天数

  switch (dateType) {
  case '0': // 1小时前
   hour = c.get(Calendar.HOUR_OF_DAY) - 1;
   c.set(Calendar.HOUR_OF_DAY, hour);
   // System.out.println(df.format(c.getTime()));
   break;
  case '1': // 2小时前
   hour = c.get(Calendar.HOUR_OF_DAY) - 2;
   c.set(Calendar.HOUR_OF_DAY, hour);
   // System.out.println(df.format(c.getTime()));
   break;
  case '2': // 3小时前
   hour = c.get(Calendar.HOUR_OF_DAY) - 3;
   c.set(Calendar.HOUR_OF_DAY, hour);
   // System.out.println(df.format(c.getTime()));
   break;
  case '3': // 6小时前
   hour = c.get(Calendar.HOUR_OF_DAY) - 6;
   c.set(Calendar.HOUR_OF_DAY, hour);
   // System.out.println(df.format(c.getTime()));
   break;
  case '4': // 12小时前
   hour = c.get(Calendar.HOUR_OF_DAY) - 12;
   c.set(Calendar.HOUR_OF_DAY, hour);
   // System.out.println(df.format(c.getTime()));
   break;
  case '5': // 一天前
   day = c.get(Calendar.DAY_OF_MONTH) - 1;
   c.set(Calendar.DAY_OF_MONTH, day);
   // System.out.println(df.format(c.getTime()));
   break;
  case '6': // 一星期前
   day = c.get(Calendar.DAY_OF_MONTH) - 7;
   c.set(Calendar.DAY_OF_MONTH, day);
   // System.out.println(df.format(c.getTime()));
   break;
  case '7': // 一个月前
   day = c.get(Calendar.DAY_OF_MONTH) - 30;
   c.set(Calendar.DAY_OF_MONTH, day);
   // System.out.println(df.format(c.getTime()));
   break;
  }
  int mYear = c.get(Calendar.YEAR);
     int mMonth = c.get(Calendar.MONTH);
     int mDay = c.get(Calendar.DAY_OF_MONTH);
     StringBuilder strForwardDate = new StringBuilder().append(mYear).append(
                (mMonth + 1) < 10 ? "0" + (mMonth + 1) : (mMonth + 1)).append(
                        (mDay < 10) ? "0" + mDay : mDay);
     System.out.println("strDate------->"+strForwardDate+"-"+c.getTimeInMillis());
     return strForwardDate;
  //return c.getTimeInMillis();
 }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值