日期:2014-05-18  浏览次数:20947 次

C#中怎么转换time_t类型的时间?
遇到一个问题,要读取文件中的一个字段,该值是一个time_t类型的变量,在C++中表示为如下
time_t   tt   =   0x46a5af8d;   (十进制为1185263501)
cout < <ctime(&tt) < <endl;

输出如下:
Tue   Jul   24   15:51:41   2007

现在C#中做如下转换

double   tmp   =   (double)1185263501;

TimeSpan   ts   =   new   TimeSpan();
ts   =   TimeSpan.FromSeconds(tmp);

DateTime   dt   =   new   DateTime(1970,1,1,0,0,0);
DateTime   now   =   new   DateTime();
now   =   dt   +   ts;

Console.WriteLine( "{0} ",now.ToString());

输出如下:
2007-7-24   7:51:41


小时的值有问题,怎么回事?是不是这样转方法有问题?

------解决方案--------------------
时区的问题...估计你那个时间源是UTC时间...加个DateTimeKind参数即可...

DateTime dt = new DateTime (year,month,day,hour,minute,second,DateTimeKind.Utc);