如何从网络提供商处获取日期和时间?

Posted

技术标签:

【中文标题】如何从网络提供商处获取日期和时间?【英文标题】:How can I get the date & time from the network provider? 【发布时间】:2011-11-01 16:47:26 【问题描述】:

有没有办法以编程方式从网络提供商处获取日期和时间?可能与我们从网络提供商获取位置的方式相同。

【问题讨论】:

【参考方案1】:

您可能需要使用自定义 NITZ 或 NTP 库

http://groups.google.com/group/android-developers/browse_thread/thread/d5ce3bcfe17e272b?pli=1

因此,请注意 Android 使用运营商提供的 NITZ 事件 正确设置系统日期和时间。 Android 也回退到 当没有可用的蜂窝网络时自动网络 NTP。

http://en.wikipedia.org/wiki/NITZ

currentTimeMillis() 提供的时间通常是最好的 可用时间,这是设备上所有服务使用的时间, 比如日历和闹钟。

然而

但是 NTP API 不是 Java 代码可以访问的地方,这 意味着我们将重新使用现有的 Java NTP/SNTP 客户端库,如果 无论我们是否在网络上,我们都需要准确的时间 这是 NITZ 的能力。

Java NTP 库

您可以从

找到 Java NTP 库的简单实现 support.ntp.org

【讨论】:

为什么它不是android自己提供的,因为它是开发者应用程序的基本需求,如果我们使用日历,任何人都可以通过更改时间来愚弄应用程序【参考方案2】:

答案是肯定的 我尝试了以下代码以从网络提供商处获取时间 为此使用 loc.getTime()

    @Override
    public void onLocationChanged(Location loc)
    
        loc.getLatitude();
        loc.getLongitude();

        latitude.setText(""+loc.getLatitude());
        longitude.setText(""+loc.getLongitude());
        time.setText(""+loc.getTime());
    

【讨论】:

这不是最后一次知道位置的确切时间吗?而且不是来自运营商,而是来自 GPS(虽然后者更准确) 它可能来自任何一个,有一个 LocationManager.GPS_PROVIDER 和一个 LocationManager.NETWORK_PROVIDER 这个不获取时间,它显示最后一个位置被获取的那一刻的时间。如果你不动而不动怎么办?您的位置不会改变,因此您不会更新时间?

以上是关于如何从网络提供商处获取日期和时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何从日期时间获取日期名称

如何根据日期列中的月份从 SQLite 中获取数据

如何获取设备独立的本地日期和时间Android

怎样让三星平板电脑的时间与网络一致

从 GPS 或网络提供商处获取速度

如何从 yfinance 获取特定时间和日期的 1 分钟价格数据?