目标将“1199351662”(数字格式)转换为“2008-01-03 17:14:22”(日期格式)1199351662是通过以下方法(C++)生产的。 struct _timeb tb;
_ftime64_s(&tb);
__int64 nTimeTick = (__int64)(tb.time * (1000) + (__int64)tb.millitm);
__int64 nMinute = nTimeTick / 1000;  //nMinute的值就是1199351662在c++中可以通过_localtime64_s( &when, &nMinute ); 这个方法还原日期出来,就是将1199351662转换为2008-01-03 17:14:22现在提出的问题:如何在C#中讲这个数字还原为日期,就是将1199351662转换为2008-01-03 17:14:22急用。谢谢高手们。

解决方案 »

  1.   

    2008-01-03   17:14:22 
    这个DateTime量对应的C# Ticks值是
    633349772620000000
      

  2.   

    昨天刚有人问过这个问题...DateTime t = new DateTime(1970, 1, 1).AddSeconds(i);
    这个数字代表从1970年1月1日以来的秒数...这是老Unix系统的时间戳表示法...另外这个时间是UTC...根据你的时区转换一下...
      

  3.   

    using System;class Program
    {
    static void Main(string[] args)
    {
            // 你得到的数字是自 1970 年 1 月 1 日 8 点整到 2008-01-03 17:14:22 经过的秒数
            long nMinute = 1199351662L;        // 初始化一个C# DateTime 对象
            // 参数值表示自 0001 年 1 月 1 日午夜 12:00:00 以来已经过的时间的以 100 毫微秒为间隔的间隔数。
            DateTime when = new DateTime(621356256000000000L + nMinute * 10000000L);        Console.WriteLine(when);
    }
    }
      

  4.   

    2 楼有点小错误,结果不对,应该是
    DateTime t = new DateTime(1970, 1, 1, 8, 0, 0).AddSeconds(1199351662);
      

  5.   

    time_t是从1970年1月1日的格林尼治时间开始的,所以以下就是你要的结果
    System.DateTime time= new System.DateTime(1970, 1, 1).ToLocalTime().AddSeconds(1199351662);
      

  6.   

    刚才自学了一下 Utc Unspecified Local 方面的知识,剪刀的答案相当完美了,我帮忙注释:using System;class Program
    {
        static void Main(string[] args)
        {
            // 你得到的数字是自格林尼治时间(UTC) 1970 年 1 月 1 日午夜 12:00:00 起的秒数
            // 相当于本地时间即北京时间(Local)   1970 年 1 月 1 日上午  8:00:00 起的秒数
            double nMinute = 1199351662;        // 得到 1970 年 1 月 1 日午夜 12:00:00, 但其只读属性 Kind 值为 Unspecified,表示它代表了一个未定义时区的时间。
            DateTime when = new DateTime(1970, 1, 1);        // 把 Unspecified 时间转换为本地时间。
            // 按北京时间会增加8小时
            when = when.ToLocalTime();
            
            // 加上时间偏移量,参数单位为秒
            when = when.AddSeconds(nMinute);        Console.WriteLine(when);
        }
    }