C#中怎么转换time_t类型的时间?

hunterize 2007-08-31 06:01:32
遇到一个问题,要读取文件中的一个字段,该值是一个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


小时的值有问题,怎么回事?是不是这样转方法有问题?
...全文
1105 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xpi_01 2012-07-26
  • 打赏
  • 举报
回复
要转换为本地时间,会有一个偏移量。

now = dt.AddSeconds(tmp).ToLocalTime()
a77456856 2010-05-20
  • 打赏
  • 举报
回复
时差,北京时间和格林威治时间差8小时
vrhero 2007-08-31
  • 打赏
  • 举报
回复
时区的问题...估计你那个时间源是UTC时间...加个DateTimeKind参数即可...

DateTime dt = new DateTime (year,month,day,hour,minute,second,DateTimeKind.Utc);
纷享刘晨 2007-08-31
  • 打赏
  • 举报
回复
你怎么知道小时的值有问题?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧