package com.pwt.netty.util;

import io.netty.buffer.ByteBuf;

import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;

public class ByteBufUtil {

    public static final int VEHICLE_DATE_LENGTH = 8;

    public static void WriteString(ByteBuf byteBuf, String str, int length, String replacing) {

        if(length == 0) {
            return;
        }

        if(str == null || str.length() != length) {
            byteBuf.writeCharSequence(StringUtils.repeat(replacing, length), StandardCharsets.US_ASCII);
        } else {
            byteBuf.writeCharSequence(str, StandardCharsets.US_ASCII);
        }
    }

    public static LocalDateTime bytes2DateTime(byte[] bytes) {
        return LocalDateTime.of(bytes[0] * 100 + bytes[1], bytes[2], bytes[3], bytes[4], bytes[5], bytes[6]);
    }

    public static byte[] dateTime2bytes(LocalDateTime dateTime) {
        byte[] bytes = new byte[VEHICLE_DATE_LENGTH];
        bytes[0] = (byte) (dateTime.getYear() / 100);
        bytes[1] = (byte) (dateTime.getYear() % 100);
        bytes[2] = (byte) (dateTime.getMonthValue());
        bytes[3] = (byte) (dateTime.getDayOfMonth());
        bytes[4] = (byte) (dateTime.getHour());
        bytes[5] = (byte) (dateTime.getMinute());
        bytes[6] = (byte) (dateTime.getSecond());
        return bytes;
    }

    public static void main(String[] args) {
        //14 17 08 10 0C 1E 1F 00
        byte[] bytes = new byte[] {0x14, 0x17, 0x08, 0x10, 0x0C, 0x1E, 0x1F, 0x00};
        LocalDateTime abc = bytes2DateTime(bytes);
        System.out.println(abc.toLocalTime());
    }
}
