Return a date in Davis Vantage Pro format (two bytes). - Java java.util

Java examples for java.util:Calendar Format

Description

Return a date in Davis Vantage Pro format (two bytes).

Demo Code

/*/*  w  w w . ja v  a 2  s  .  co  m*/
 *  Copyright 2006 Goran Ehrsson.
 *
 *  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.
 *  under the License.
 */
//package com.java2s;

import java.util.Calendar;
import java.util.Date;

public class Main {
    public static void main(String[] argv) throws Exception {
        Date timestamp = new Date();
        System.out.println(java.util.Arrays.toString(getDate(timestamp)));
    }

    /**
     * Return a date in Davis Vantage Pro format (two bytes). 
     * @param timestamp the date value
     * @return a byte array of size 2
     */
    public static byte[] getDate(Date timestamp) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(timestamp);
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH) + 1;
        int day = cal.get(Calendar.DAY_OF_MONTH);
        int value = day + month * 32 + (year - 2000) * 512;
        return getBytes(value);
    }

    /**
     * Return the two least significant bytes of a value.
     * The least signifcant byte is returned first (at index 0)
     * @param value the value to convert to bytes
     * @return a byte array of size 2 with LSB first.
     */
    public static byte[] getBytes(int value) {
        byte[] rval = new byte[2];
        // Least significant byte first.
        rval[0] = (byte) (value & 0xff);
        rval[1] = (byte) ((value >>> 8) & 0xff);
        return rval;
    }
}

Related Tutorials