| package com.zy.acs.gateway.domain; | 
|   | 
| import com.zy.acs.gateway.utils.ValidUtil; | 
| import io.netty.buffer.ByteBuf; | 
|   | 
| import java.time.Instant; | 
| import java.time.LocalDateTime; | 
| import java.time.ZoneId; | 
| import java.util.Date; | 
|   | 
| public class PacDateTime { | 
|   | 
|     private int year; | 
|     private int month; | 
|     private int day; | 
|     private int hour; | 
|     private int min; | 
|     private int sec; | 
|   | 
|     public int getYear() { | 
|         return year; | 
|     } | 
|   | 
|     public PacDateTime setYear(int year) { | 
|         this.year = year; | 
|         return this; | 
|     } | 
|   | 
|     public int getMonth() { | 
|         return month; | 
|     } | 
|   | 
|     public PacDateTime setMonth(int month) { | 
|         this.month = month; | 
|         return this; | 
|     } | 
|   | 
|     public int getDay() { | 
|         return day; | 
|     } | 
|   | 
|     public PacDateTime setDay(int day) { | 
|         this.day = day; | 
|         return this; | 
|     } | 
|   | 
|     public int getHour() { | 
|         return hour; | 
|     } | 
|   | 
|     public PacDateTime setHour(int hour) { | 
|         this.hour = hour; | 
|         return this; | 
|     } | 
|   | 
|     public int getMin() { | 
|         return min; | 
|     } | 
|   | 
|     public PacDateTime setMin(int min) { | 
|         this.min = min; | 
|         return this; | 
|     } | 
|   | 
|     public int getSec() { | 
|         return sec; | 
|     } | 
|   | 
|     public PacDateTime setSec(int sec) { | 
|         this.sec = sec; | 
|         return this; | 
|     } | 
|   | 
|   | 
|     public boolean checkDateTime() { | 
|         return | 
|                 ValidUtil.rangeValid(this.year, 0, 99) | 
|                         && ValidUtil.rangeValid(this.month, 1, 12) | 
|                         && ValidUtil.rangeValid(this.day, 1, 31) | 
|                         && ValidUtil.rangeValid(this.hour, 0, 23) | 
|                         && ValidUtil.rangeValid(this.min, 0, 59) | 
|                         && ValidUtil.rangeValid(this.sec, 0, 59); | 
|     } | 
|   | 
|     public PacDateTime write2Buf(ByteBuf buf) { | 
|         buf.writeByte(this.year & 0xFF) | 
|                 .writeByte(this.month & 0xFF) | 
|                 .writeByte(this.day & 0xFF) | 
|                 .writeByte(this.hour & 0xFF) | 
|                 .writeByte(this.min & 0xFF) | 
|                 .writeByte(this.sec & 0xFF); | 
|         return this; | 
|     } | 
|   | 
|     public static PacDateTime readFromBuf(ByteBuf buf) { | 
|         PacDateTime newDateTime = new PacDateTime() | 
|                 .setYear(buf.readUnsignedByte()) | 
|                 .setMonth(buf.readUnsignedByte()) | 
|                 .setDay(buf.readUnsignedByte()) | 
|                 .setHour(buf.readUnsignedByte()) | 
|                 .setMin(buf.readUnsignedByte()) | 
|                 .setSec(buf.readUnsignedByte()); | 
|   | 
|         if (newDateTime.checkDateTime()) { | 
|             return newDateTime; | 
|         } else { | 
|             throw new RuntimeException("日期时间不正确"); | 
|         } | 
|     } | 
|   | 
|     public static PacDateTime readFromTime(long timestamp) { | 
|         Instant instant = Instant.ofEpochMilli(timestamp); | 
|         LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); | 
|         PacDateTime newDateTime = new PacDateTime() | 
|                 .setYear(localDateTime.getYear() - 2000) | 
|                 .setMonth(localDateTime.getMonthValue()) | 
|                 .setDay(localDateTime.getDayOfMonth()) | 
|                 .setHour(localDateTime.getHour()) | 
|                 .setMin(localDateTime.getMinute()) | 
|                 .setSec(localDateTime.getSecond()); | 
|   | 
|         if (newDateTime.checkDateTime()) { | 
|             return newDateTime; | 
|         } else { | 
|             throw new RuntimeException("日期时间不正确"); | 
|         } | 
|     } | 
|   | 
|     public static void main(String[] args) { | 
|         PacDateTime time = | 
|         PacDateTime.readFromTime(new Date().getTime()); | 
|         System.out.println(time); | 
|     } | 
|   | 
| } |