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);