Java 如何使用PHP datetime字符串在Android中获取运行时间
我有一个PHP web服务将JSON响应发送回我的Java客户端。时间以JSON格式返回,如下所示:Java 如何使用PHP datetime字符串在Android中获取运行时间,java,php,android,datetime,Java,Php,Android,Datetime,我有一个PHP web服务将JSON响应发送回我的Java客户端。时间以JSON格式返回,如下所示: created_at: "2018-04-02 20:06:42" String input = "2018-04-02 20:06:42"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // use the timezone name. Example: "UTC", "America/New_Yor
created_at: "2018-04-02 20:06:42"
String input = "2018-04-02 20:06:42";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// use the timezone name. Example: "UTC", "America/New_York", "Europe/Berlin", etc
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = sdf.parse(input);
// difference in milliseconds
long diffFromNow = System.currentTimeMillis() - date.getTime();
我在Android应用程序中以字符串的形式获取datetime,因此我想基于此字符串显示Android应用程序上经过的时间。我尝试了很多方法,比如把它转换成长的、双重的、日期对象,但都不适合我。那么,将其转换为java对象的正确方法是什么呢?我可以挖掘当前时间来获取自记录日期以来经过的时间?您的输入表示本地日期/时间(
2018-04-02 20:06:42
),要获取经过的时间,您需要定义要使用的时区
输入对应于2018年4月2日晚上8:06:42,但在哪里?请注意,在世界不同的地方,晚上8点发生在不同的时刻,这取决于你所在的时区。如果不知道输入所指的确切时区,就不可能将其与“现在”进行比较
如果您有办法找出与输入相对应的时区,则可以开始执行以下操作:
created_at: "2018-04-02 20:06:42"
String input = "2018-04-02 20:06:42";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// use the timezone name. Example: "UTC", "America/New_York", "Europe/Berlin", etc
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = sdf.parse(input);
// difference in milliseconds
long diffFromNow = System.currentTimeMillis() - date.getTime();
另一种选择(更好的一种,IMO)是使用(对于API级别26),或者(对于API级别<26-如何在Android中配置):