正常情况下我们显示时间用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协议传输了,一般这种时间的传输方式都用在与开发板信息的情况居多.仅供参考,欢迎批评指正.
网友评论