1

我正在使用带有 C# 3.5 的 Windows Mobile 6.5 SDK。我需要使用 Server(ASP.NET) 日期/时间更改移动日期/时间。我找不到任何东西。

更新:我正在处理时区问题。如果服务器和客户端在同一时区,那么我没有问题。但是,如果时区不同,我将面临问题。

4

3 回答 3

4

在移动设备上更改时间并不难 - openNETCF 帮助程序更容易,否则您需要执行以下操作:

    // Compiling for Windows Mobile
    [DllImport("coredll.dll")]
    static extern bool SetLocalTime(ref SYSTEMTIME time);

    private void SetTime()
    {
        SYSTEMTIME st;

        // Thanks to Jim Hollenhorst <hollenho@attbi.com>
        DateTime trts = DateTime.Now.AddMilliseconds(LocalClockOffset);


        st.year = (short)trts.Year;
        st.month = (short)trts.Month;
        st.dayOfWeek = (short)trts.DayOfWeek;
        st.day = (short)trts.Day;
        st.hour = (short)trts.Hour;
        st.minute = (short)trts.Minute;
        st.second = (short)trts.Second;
        st.milliseconds = (short)trts.Millisecond;

        SetLocalTime(ref st);
    }

其中 SYSTEMTIME 是:

    private struct SYSTEMTIME
    {
        public short year;
        public short month;
        public short dayOfWeek;
        public short day;
        public short hour;
        public short minute;
        public short second;
        public short milliseconds;
    }

而LocalClockOffset 是预计算的所需时间和当前时间之间的差异。

现在查询的另一部分是与服务器同步。如果您将服务器同步到 time-a.nist.gov,那么您也可以将您的手机同步到相同的服务器。

Valer Bocan 为此提供了出色的代码,这就是上述内容的来源。链接: http: //www.bocan.ro/sntpclient

我还没有这样做,但可能让您的服务器也充当时间服务器,而是将您的手机指向您的服务器并使用相同的协议?

最后时区 - 在我的 PDA 项目中,我一直将日期时间作为 GMT 传递,与 GMT 有 +/- 偏移。

于 2012-10-04T22:29:11.300 回答
3

我遇到了同样的问题并使用 OpenNETCF API 来解决它。

首先你应该在这里下载。

在同步时,您应该将日期传递给 PDA,如果您愿意,可以使用 xml 文件或使用数据库来设置您想要的日期。

使用项目参考上的 OpenNETCF.WindowsCE.dll,执行以下操作:

OpenNETCF.WindowsCE.DateTimeHelper.SystemTime = 
                new DateTime(2012, 12, 23, 23, 00, 00);

通过这样做,您会将当前日期更改为'2012-12-23 23:00:00' 我已经在 6.1 移动设备上测试了此解决方案,但我猜 6.5 会很好。

于 2012-10-04T21:09:54.003 回答
1

当您处理服务器和数据并同步更改时,您应该始终使用 UTC 时间值而不是(可能设置错误的本地时间)。

想象一下,当不同时区的两部手机使用可能错误的本地时间/时区更改相同的数据时会发生什么。因此,始终使用 UTC。

其次,Windows 移动设备已经支持开箱即用的时间同步。注册表中有一个时间服务器条目,操作系统使用它来同步时间。然后可能会有一项服务使用手机提供商数据 (NITZ) 同步时间并设置时区和本地时间。

〜约瑟夫

于 2012-10-05T04:14:01.750 回答