另一种存储日期和时间的数据类型

本文关键字:数据类型 时间 存储 日期 另一种 | 更新日期: 2023-09-27 18:08:49

我正在创建一个创建数据包数据的c#程序。数据包中的一个数据是4字节大小的Date和Time。我这样做了:

 public byte[] convertDateTimetoHex4bytes(DateTime dt)
    {
        //Convert date time format 20091202041800
        string str = dt.ToString("yyyyMMddhhmmss");
        //Convert to Int32 
        Int32 decValue = Convert.ToInt32(str);
         //convert to bytes
        byte[] bytes = BitConverter.GetBytes(decValue);
        return bytes;
    }

然而,似乎我需要使用8字节的数据,因为32位太小(运行时错误)。任何人都可以帮助我,如果有任何其他较小的日期时间格式与4字节?或者其他方式?

另一种存储日期和时间的数据类型

这个错误是逻辑上的,因为给定的字符串值在转换为数字时,只是太大无法用Int32表示,而且额外的信息不能"塞进去"。

20140616160000  -- requested number (i.e. DateTime for today)
    2147483647  -- maximum Int32 value (2^31-1)

UNIX时间戳可能以[传统的]32位工作,但它只有秒精度和1970~2038的有限范围。参见如何将Unix时间戳转换为DateTime,反之亦然?如果对这种方法感兴趣。

时间戳的结果是一个较小的数字范围,因为它没有在不同的时间组件周围使用未使用的数字;例如,在原始格式中,不使用以下格式的并集中的数字,从而"浪费":

yyyyMMddhhmm60-yyyyMMddhhmm99   -- these seconds will never be
yyyyMMddhh60ss-yyyyMMddhh99ss   -- these minutes will never be
yyyyMMdd25hhss-yyyyMMdd99hhss   -- these hours will never be
                                -- etc.
相关文章: