Java实现 byte[] 显示时间 字节格式传输时间 机器语言的时间传输方式

正常情况下我们显示时间用Date类就好了,传输时间的时候如果不规定长度可以直接将Date类型数据转为String类型然后用getBytes()转为byte[]进行传输就好了

这里我说的是规定长度的,这里规定传输要求:
年: 两个字节
月,日,时,分,秒,星期: 各1个字节
这里需要注意的的我这里的星期是直接用 2表示了,正常情况下new Date()出来的数据是"Wed Sep 19 17:19:42 CST 2018"需要进行处理

先处理数据new Date()的

String system_time = TimeUtils.date2String (new Date());//系统时间

用工具类来统一时间格式调整为 "2018 9 18 15 26 13 2"所有的数据均由一个空格隔开

TimeUtils工具类

public class TimeUtils
{
/**
*Date转换为String
**/
    public static String date2String (Date date){
        //2018-9-18
        //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
       // return sdf.format(date);
        //2018-9-18 17:25:30
        //SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //return sdf.format(date);
        //2018-9-18 17:25:30 星期三
        //SimpleDateFormat sdf= new SimpleDateFormat("yyyy MM dd HH mm ss EEE");
        //return sdf.format(date);
        //2018 9 18 17 25 30 3
        SimpleDateFormat sdf= new SimpleDateFormat("yyyy MM dd HH mm ss u");
        return sdf.format(date);
    }

}

将格式统一到我们想要的格式,
若是由第三方传来的额数据"2018-9-18 15:26:13 2"这样格式的数据则不需要以上的工具类可直接用一下的方法

//这里的system_time是从第三方传来的时间字符串,这里如果是做new Date需要进行String转化
system_time = system_time.replaceAll("-"," ").replaceAll(":"," ");//用String的替换功能

接下来就是用byte数组封装时间字符串

/**
     * 时间字符串用byte[] 封装
     * @param date
     * @return
     */
    public static byte[] getByteTime(String date)
    {
        String[] timeString = date.split(" ");
        
        int year = stringToInt(timeString[0]);
      //年 2018 十六进制  7 E2   byte[] {7,-30 }
        byte y1 = (byte) ((year >> 8) & 0xff);//年高八位  
        byte y2 = (byte) (year & 0xff);//年低八位  
        int month = stringToInt(timeString[1]);
        int day = stringToInt(timeString[2]);
        int hour = stringToInt(timeString[3]);
        int minute = stringToInt(timeString[4]);
        int second = stringToInt(timeString[5]);
        int week = stringToInt(timeString[6]);
        byte sum = (byte) ((y1 + y2 + month + day + hour + minute + second + week) & 0xff);//和校验位,可加可不加
       byte[] today = { y1, y2, (byte) month, (byte) day, (byte) hour, (byte) minute, (byte) second, (byte) week, sum};
        return today;
    }

    public static int stringToInt(String s)
    {
        return Integer.parseInt(s);
    }

这样转换后的时间就可以传给需要的第三方平台了,可以用socket通过tcp/ip协议传输了,一般这种时间的传输方式都用在与开发板信息的情况居多.仅供参考,欢迎批评指正.

你可能感兴趣的:(Java实现 byte[] 显示时间 字节格式传输时间 机器语言的时间传输方式)