hive做离线分析时间截取思路

  1. 计算天新增时间思路:

    拿出当天的时间进行格式化,拿到零点,例如2019/3/12 22:21 变成 2019/3/12 00:00 就是这天的开始时间。
    拿到这天的时间后用Calendar 日历在天的基础上加一就是今天的结束时间 2019/3/13 00:00,只要在这两个
    时间段之间的就是今天新增的。

    代码:


	  /**
	   *计算某天的起始时刻(毫秒数)
	   */
	  @Test
	  public void testStartTime() throws ParseException {
			Date d = new Date();
			long ms = getZeroDate(d).getTime();
			System.out.println(ms);
	  }
	  /**
	   * 得到指定date的零时刻.
	   */
	  private Date getZeroDate(Date d){
			try {
				  SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd 00:00:00");
				  return sdf.parse(sdf.format(d));
			} catch (Exception e) {
				  e.printStackTrace();
			}
			return null ;
	  }
	  /**
	   *计算某天的结束时刻(毫秒数)
	   */
	  @Test
	  public void testEndTime() throws ParseException {

			Date d = new Date();
			Date zeroDate = getZeroDate(d) ;
			//日历
			Calendar c = Calendar.getInstance();
			c.setTime(zeroDate);

			c.add(Calendar.DAY_OF_MONTH,1); //在的天的基础上加1
			Date endDate = c.getTime();
			System.out.println(endDate.getTime()) ;
	  }
  1. 计算周新增时间思路:

    注意周结束时间日历进行加减的规律是 ,假如今天是这周的第三天,那你用日历Calendar.DAY_OF_MONTH,-(n - 1)
    (- 代表向前几天 , + 代表向后几天),向前翻3-1天就是这周的起始天数,星期日。要是这周结束时间就是(8-n)n是3
    用的是getZeroDate() 这个方法都要调用这个。
    代码:

 /**
	   * 测试周起始时间
	   */
	  @Test
	  public void testWeekStartTime(){
			Date d = new Date();
			Date zeorDate = getZeroDate(d);

			Calendar c = Calendar.getInstance();
			c.setTime(zeorDate);
            //周日是一周的第一天
			int n = c.get(Calendar.DAY_OF_WEEK); //拿到是这周的第几天
			//add 就是进行数字处理
			c.add(Calendar.DAY_OF_MONTH,-(n - 1)); // - 代表向前几天 , + 代表向后几天
//          拿到毫秒值的方式
//			Date  time = c.getTime();
//			long l = time.getTime();
			long ms = c.getTimeInMillis();
			System.out.println(ms );
	  }

	  /**
	   * 测试周结束时间
	   */
	  @Test
	  public void testWeekEndTime(){
			Date d = new Date();
			Calendar c = Calendar.getInstance();
			c.setTime(d);
			int n = c.get(Calendar.DAY_OF_WEEK);
			c.add(Calendar.DAY_OF_MONTH,(8 - n));
			//
			Date weekFirstDate = c.getTime();
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss") ;

			System.out.println(sdf.format(weekFirstDate));
	  }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值