DateTime.AddMilliSeconds似乎不起作用

Jam*_*mes 2 c# gps

我有一个简单的功能来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;
    }
Run Code Online (Sandbox Code Playgroud)

现在,当weeknumber = 1254seconds = 412250.000我得到正确的输出:

412250, 412250, 0
2004.01.22,18:30:50.000
Run Code Online (Sandbox Code Playgroud)

但是,当我使用时weeknumber = 1254,seconds = 412250.123输出如下所示:

412250.123, 412250, 123
2004.01.22,18:30:50.000
Run Code Online (Sandbox Code Playgroud)

我也试过没有铸造毫秒int,仍然有同样的问题.我真的很感激任何帮助.

Tim*_*Tim 7

您没有存储AddMilliseconds()通话结果.你需要说

DateTime newTime = time.AddMilliseconds(millisecs);
Console.WriteLine(newTime.ToString("yyyy.MM.dd,HH:mm:ss.fff"));
Run Code Online (Sandbox Code Playgroud)