我有一个简单的函数可以int
代表GPS周,而代表GPS秒的整数倍。将GPS Week
是自午夜开始于1980年1月6日的周数,以及GPS seconds
是的秒数自上次GPS周开始。我想将它们转换为具有特定格式的字符串,以便可以将GPS数据与其他仪器的数据进行匹配。
我的功能如下:
private DateTime GetFromGps(int weeknumber, double seconds)
{
DateTime datum = new DateTime(1980, 1, 6, 0, 0, 0);
DateTime week = datum.AddDays(weeknumber * 7);
DateTime time = week.AddSeconds(Math.Floor(seconds));
double millisecs = (seconds - Math.Floor(seconds)) * 1000;
Console.WriteLine("{0}, {1}, {2}", seconds, Math.Floor(seconds), (int)millisecs);
time.AddMilliseconds((int)millisecs);
Console.WriteLine(time.ToString("yyyy.MM.dd,HH:mm:ss.fff"));
return time;
}
现在,当weeknumber = 1254
和seconds = 412250.000
我得到正确的输出:
412250, 412250, 0
2004.01.22,18:30:50.000
但是,当我使用时weeknumber = 1254
,seconds = 412250.123
输出看起来像这样:
412250.123, 412250, 123
2004.01.22,18:30:50.000
我也尝试了不耗费毫秒的时间int
,但仍然遇到相同的问题。非常感谢您的帮助。
您没有存储AddMilliseconds()
通话结果。你要说
DateTime newTime = time.AddMilliseconds(millisecs);
Console.WriteLine(newTime.ToString("yyyy.MM.dd,HH:mm:ss.fff"));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句