【问题标题】:How to get current date and time from server in android app? [closed]如何从android应用程序中的服务器获取当前日期和时间? [关闭]
【发布时间】:2013-12-19 06:00:39
【问题描述】:
我正在开发一个用于学习目的的安卓应用。我需要从我的服务器获取当前日期和时间到我的 android 应用程序并设置限制,以便只能在指定的日期和时间(例如,周一至周三,上午 10:30 至下午 3 点)访问该应用程序特定时区)。而且我不想使用设备日期和时间,因为它可以更改并且可以访问应用程序。
我检查了SntpClient 代码并在我的应用程序中实现了它,但没有成功。
【问题讨论】:
标签:
java
android
date
datetime
time
【解决方案1】:
在您的服务器上编写一个简单的端点,它只返回一个表示毫秒的 long 值
-
编写一个简单的 http 客户端从 android 客户端向该端点发出请求,或者在该请求中传递一些令牌以了解正在访问的设备/客户端/用户,或者在此处添加安全通信
在安卓客户端解析String到Long和Long到Date
【解决方案2】:
在php代码中使用$my_date = date("Y-m-d H:i:s");
当前日期,此输出在 android 应用程序中解析
【解决方案3】:
为了帮助您入门……
在运行 Servlet 容器(例如 Apache Tomcat 或 Eclipse Jetty)的 Web 服务器上创建 Java Servlet。 servlet 不是完整的网页,而是仅返回一个字符串,其中包含 UTC 时区中标准 ISO 8601 格式的日期时间(无时区偏移)。添加 Joda-Time 库以避免使用臭名昭著的 java.util.Date/Calendar。
servlet 的核心……
String now = new DateTime( DateTimeZone.UTC ).toString();
在 Android 端使用 HTTP 客户端库调用 servlet。
客户端代码的核心……
DateTime start = new DateTime( 2013, 12, 13, 14, 15, 16, DateTimeZone.UTC );
DateTime stop = start.plusHours( 8 );
DateTime now = new DateTime( stringReturnedByServlet, DateTimeZone.UTC );
if ( now.isAfter(start) & now.isBefore(stop) ) {
// Do your thing
} else {
// Refuse to do your thing
}