C#实现UTC时间与Datetime转换

时间:2023-03-09 22:11:47
C#实现UTC时间与Datetime转换

为了便于传输,通信过程中传输的都是:当前时间跟标准时间相隔的秒数,并且是以16进制字节的形式传输的。

 public double ConvertDateTimeInt(System.DateTime time)//将时间格式的数据类型转换成浮点数类型
{
double intResult = ;
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(, , ));
intResult =(time - startTime).TotalSeconds;
return intResult;
} public DateTime ConvertIntDatetime(double utc)
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(, , ));
startTime = startTime.AddSeconds(utc);
startTime = startTime.AddHours();//转化为北京时间(北京时间=UTC时间+8小时 )
return startTime;
}
  public byte[] ConvertDoubleByte(double d)
{
byte[] result = new byte[];
float f=(float)d;
result = BitConverter.GetBytes(f);
return result;
} public double ConvertByteDouble(byte [] d)
{
double result=;
float q = BitConverter.ToSingle(d, );
result = (double)q;
return result;
}
 private void button1_Click(object sender, EventArgs e)//这种只是显示的形式不同,未达到目的
{
DateTime utc_tem = DateTime.UtcNow; double utc = ConvertDateTimeInt(utc_tem);//相对应的秒数!
byte[] s = new byte[];
s = ConvertDoubleByte(utc); DateTime mytime = ConvertIntDatetime(1429647491.3936753);
byte[] b = new byte[] { 0x80,0x6d,0xaa,0x4e};
mytime = ConvertIntDatetime(ConvertByteDouble(b));
}