美文网首页
Java实现 byte[] 显示时间 字节格式传输时间 机器语

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

作者: 27岁未成年 | 来源:发表于2018-09-19 17:35 被阅读0次

    正常情况下我们显示时间用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[] 显示时间 字节格式传输时间 机器语

          本文链接:https://www.haomeiwen.com/subject/uewinftx.html