如何将一个int16的数字,表示成一个日期目前唯一知道的一个算法是用一个固定的日期开始,算天数比如固定在2000-01-01  
2000-01-05 就用4表示
2012-01-01 就用730表示
希望有牛人给一个除此之外的算法,某些原因,只能是int16,也就是只能是两个字节的

解决方案 »

  1.   

    DateTime dt = DateTime.Now;
    int result = new TimeSpan(dt.Ticks - new DateTime(2000, 1, 1).Ticks).Days;
    Console.WriteLine(result);
      

  2.   

    如果你能说出为什么这样不好,或许会有别的办法,为了不同而不同有什么意义呢。你要不同我有很多办法,比如我对这个日期取反,异或等等,让他表现的不同。或者如果你希望表达更小的范围,对它做一个Hash。至于怎么转化,变形的算法更多,比如你可以从那个开始日期循环去求当前日期,或者用个递归算法等等。总之为了不同而不同,我可以写出无穷多个算法来。
      

  3.   

    简单的说一下情况吧,因为是非常节约网络资源的模式,希望字节越少越好
    另外,因为日期并不是固定的,说不定有比1900年还早的时间需要表示如果是取反,或异或,能够,请赐教,如果做hash,还能反转成日期????
      

  4.   

    本帖最后由 caozhy 于 2012-04-25 00:26:18 编辑