首页 > 其他分享 >Cp56Time2a 日期的相互转化

Cp56Time2a 日期的相互转化

时间:2023-05-10 12:44:07浏览次数:29  
标签:String format builder bytes Cp56Time2a 转化 日期 Calendar calendar

直接上代码


import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.HexUtil;

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

public class Cp56Time2aUtil {

/**
* Cp56Time2a转时间字符串
* @param bytes 字符数组
* @return 时间字符串
*/
public static String toDateString(byte[] bytes) {
int milliseconds1 = bytes[0] < 0 ? 256 + bytes[0] : bytes[0];
int milliseconds2 = bytes[1] < 0 ? 256 + bytes[1] : bytes[1];
int milliseconds = milliseconds2 * 256 + milliseconds1 ;
// 位于 0011 1111
int minutes = bytes[2] & 0x3F;
// 位于 0001 1111
int hours = bytes[3] & 0x1F;
// 位于 0001 1111
int days = bytes[4] & 0x1F;
// 位于 0000 1111
int months = bytes[5] & 0x0F;
// 位于 0111 1111
int years = bytes[6] & 0x7F;
return "20" + String.format("%02d", years) + "-" + String.format("%02d", months) + "-" + String.format("%02d", days) +
" " + String.format("%02d", hours) + ":" + String.format("%02d", minutes) + ":" +
String.format("%02d", milliseconds / 1000);
}

/**
* 转为时间格式
* @param bytes 字符数组
* @return 时间
*/

public static Date toDate(byte[] bytes) {
String dateString = toDateString(bytes);

return DateUtil.parse(dateString,"yyyy-MM-dd HH:mm:ss");
}

/**
* 时间转16进制字符串
* @param date 时间
* @return 16进制字符串
*/
public static String date2HexStr(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
StringBuilder builder = new StringBuilder();
String milliSecond = String.format("%04X", (calendar.get(Calendar.SECOND) * 1000) + calendar.get(Calendar.MILLISECOND));
builder.append(milliSecond.substring(2, 4));
builder.append(milliSecond.substring(0, 2));
builder.append(String.format("%02X", calendar.get(Calendar.MINUTE) & 0x3F));
builder.append(String.format("%02X", calendar.get(Calendar.HOUR_OF_DAY) & 0x1F));
int week = calendar.get(Calendar.DAY_OF_WEEK);
if (week == Calendar.SUNDAY){
week = 7;
} else {
week--;
}
builder.append(String.format("%02X", (week << 5) + (calendar.get(Calendar.DAY_OF_MONTH) & 0x1F)));
builder.append(String.format("%02X", calendar.get(Calendar.MONTH) + 1));
builder.append(String.format("%02X", calendar.get(Calendar.YEAR) - 2000));
return builder.toString();
}


public static void main(String[] args) {
String decodeStr = "98B70E11100314";
String originStr = "2020-03-16 17:14:47";
byte[] byteTimes = HexUtil.decodeHex(decodeStr);
System.out.println("Cp56Time2a原值: " + originStr);
System.out.println("解析"+ decodeStr + ": " + toDateString(byteTimes));
Date time = toDate(byteTimes);
String hexString = date2HexStr(new Date());
System.out.println("新Cp56Time2a: " + hexString);
System.out.println("新Cp56Time2a原值: " + toDateString(HexUtil.decodeHex(hexString)));
}

}

标签:String,format,builder,bytes,Cp56Time2a,转化,日期,Calendar,calendar
From: https://www.cnblogs.com/riverone/p/17387656.html

相关文章

  • 日期函数
    1//封装日期函数2functiongetDatetime(){3constdate=newDate()4letyears=date.getFullYear()5letmonth=date.getMonth()+16month=month<10?'0'+month:month7letday=date.getDate()......
  • 3-10 编写函数把华氏温度转换为摄氏温度,公式为:C=5/9(F-32),在主程序中提示用户输入一个华
    设计思路:c++函数的定义、引用以及c++语言运算的规则 代码:#include<iostream>usingnamespacestd;floatf(floata){floatx=5.0/9*(a-32);returnx;}intmain(){floatf(floata);floata;cin>>a;floatn;n=f(a);cout<<n;}总结:函数的定义与......
  • quantumPLC与南京德宏数采仪通讯,citect画面日期时间控件和复选框控件控制趋势交互功能
    这一篇笔记我在新浪博客记录过,在这里也记录一遍,新浪博客地址quantumPLC与南京德宏数采仪通讯,citect画面日期时间控件和复选框控件控制趋势交互功能_来自金沙江的小鱼_新浪博客(sina.com.cn)最近上级管理部门要求在现场生产控制计算机上新建一幅画面,生产关键参数趋势、环保监测数......
  • map转化为实体类
    `packagecn.tencent.data.ext.service.handler.common;importcn.tencent.data.ext.vo.domain;importcom.alibaba.fastjson.JSON;importjava.util.HashMap;importjava.util.Map;publicclasstest{publicstaticvoidmain(String[]args){Map<String,Strin......
  • 177_模型_Power BI 进销存6大日期维度期初与期末
    177_模型_PowerBI进销存6大日期维度期初与期末一、背景在经销存报表设计中,经常会遇到的便是期初与期末。当然我们这里说期初与期末指的是期初库存与期末库存。这里的期一般常见的会有:年月日。本案例将演示6大日期维度,分别是:日、周、月、季度、半年度、年度。先来看一下示......
  • chf 农历日期 干支日期
    1、html<script>vardate=newDate();xmltext=newXMLHttpRequest;xmltext.open("GET","2.xml",false);xmltext.send();a=xmltext.responseXML;//document.getElementById("xmlid").innerHTM......
  • 第二章学习 数据类型之间的转化 strconv的方法实现
    变量 通过修改settings里的compactfolder来让目录的关系展开而不是合并起来1.变量声明varageintage=18fmt.println("age=",age)//声明和复制合成varage2int=19fmt.Println("age2=",age2);2.变量的四种使用形式指定变量类型但是不赋值,如果没有赋值操作默认值为0......
  • WPF日期时间,不跳秒
    WPF显示日期时间,不跳秒标签:C#;WPF常规:利用DispatcherTimer实例,通过Tick时间每间隔一秒调用一次timer_Tick方法(自定义),即输出一次日期、时间。通过RaisePropertyChanged(//prism)通知到前端。publicclassMainWindowViewModel:BindableBase{publicMainWindow......
  • Oracle日期处理整理
    1.获取日期元素注意:1).hh24写法指24小时,Oracle默认是12小时2).分钟用mi,不要用mm,因为与之前的MM冲突1-12小时写法yyyyMMdd24miss(Oracle默认)1-24小时写法yyyyMMddHH24miss获取日期元素:selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')fromdual;--日期转化为字......
  • 缺少Jackson jar包,导致对象无法转化为json数据输出
       用于Json的序列化(serialization)和反序列化(deserialization)。Jackson包含三个包jackson-core、jackson-annotation、jackson-databind,作用如下  <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</a......