Java TimeUnit Calculate getWindowFlooredBinaryTime(TimeUnit unit, long timestamp, int windowSizeInSeconds)

Here you can find the source of getWindowFlooredBinaryTime(TimeUnit unit, long timestamp, int windowSizeInSeconds)

Description

get Window Floored Binary Time

License

Apache License

Parameter

Parameter Description
unit a parameter
timestamp a parameter
windowSizeInBinarySeconds (must be a power of 2)

Declaration

public static int getWindowFlooredBinaryTime(TimeUnit unit, long timestamp, int windowSizeInSeconds) 

Method Source Code

//package com.java2s;
/**//  w w  w. jav  a  2 s .c  o m
 * Copyright 2016 Ambud Sharma
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *       http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.util.concurrent.TimeUnit;

public class Main {
    private static final int MAX_BITS_TO_SHIFT = 63;
    private static final IllegalArgumentException ARGUMENT_EXCEPTION = new IllegalArgumentException();

    /**
     * @param unit
     * @param timestamp
     * @param windowSizeInBinarySeconds
     *            (must be a power of 2)
     * @return
     */
    public static int getWindowFlooredBinaryTime(TimeUnit unit, long timestamp, int windowSizeInSeconds) {
        timestamp = timeToNanoSeconds(unit, timestamp);
        System.err.println("shift:" + (MAX_BITS_TO_SHIFT - Integer.numberOfLeadingZeros(windowSizeInSeconds)));
        int ts = (int) (timestamp >> (MAX_BITS_TO_SHIFT - Integer.numberOfLeadingZeros(windowSizeInSeconds)));
        return ts;
    }

    /**
     * @param unit
     * @param timeInSeconds
     * @return
     */
    public static long timeToNanoSeconds(TimeUnit unit, long time) {
        long ts;
        switch (unit) {
        case NANOSECONDS:
            ts = time;
            break;
        case MICROSECONDS:
            ts = ((long) time * (1000));
            break;
        case MILLISECONDS:
            ts = (((long) time) * 1000 * 1000);
            break;
        case SECONDS:
            ts = (((long) time) * (1000 * 1000 * 1000));
            break;
        default:
            throw ARGUMENT_EXCEPTION;
        }
        return ts;
    }
}

Related

  1. getTimeString(long value, TimeUnit unit)
  2. getTimeUnit(Object units)
  3. getTimeUnit(String timeUnit, TimeUnit defaultUnit)
  4. getTimeUnitByName(String timeUnit, TimeUnit defaultTimeUnit)
  5. getValueString(long value, TimeUnit unit)
  6. humanReadableTime(long time, TimeUnit unit)
  7. isValidTimeUnit(String timeUnit)
  8. logTiming(String description, int n, long time, TimeUnit unit)
  9. mapByName(TimeUnit... units)