9

我想以格式获取设备上的当前时间: 2013-10-17 15:45:01 ?

服务器将上述格式的对象的日期作为字符串发送给我。现在我想获取手机当前时间,然后检查是否有超过 5 分钟的差异?

所以 A:我怎样才能以这种格式获取设备的当前时间:2013-10-17 15:45:01

B 我怎样才能算出两者之间的区别。

4

5 回答 5

8

您可以使用SimpleDateFormat来指定您想要的模式:

new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new java.util.Date())

但是,如果您只想知道时间差是否在某个阈值内,您可能应该只比较 long 值。如果您的阈值是 5 分钟,那么这是5 * 60 * 1000毫秒,因此您可以SimpleDateFormat通过调用它的parse方法来使用它并检查 long 值。

例子:

new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2013-10-13 14:54:03").getTime()
于 2013-10-17T21:55:14.573 回答
2

Date currentDate = new Date();将使用当前时间初始化一个新日期。此外,转换服务器提供的时间并取差。

String objectCreatedDateString = "2013-10-17 15:45:01";  
SimpleDateFormat  format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Date objectCreatedDate = null;
Date currentDate = new Date();
try 
{objectCreatedDate = format.parse(objectCreatedDateString);} 
catch (ParseException e) 
{Log.e(TAG, e.getMessage());}
int timeDifferential;
if (objectCreatedDate != null)
    timeDifferential = objectCreatedDate.getMinutes() - currentDate.getMinutes();
于 2013-10-17T21:56:52.420 回答
2
于 2020-07-01T16:27:09.670 回答
1

使用 SimpleDateFromat 类

DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
dateFormatter.format(date);

另请检查此文档

于 2013-10-17T22:04:40.237 回答
0

如果您可以要求服务器向您发送符合 RFC3339 的日期/时间字符串,那么以下是您两个问题的简单答案:

public String getClientTime() {
    Time clientTime = new  Time().setToNow();
    return clientTime.format("%Y-%m-%d %H:%M:%S");
}

public int diffClientAndServerTime(String svrTimeStr) {
    Time svrTime = new Time();
    svrTime.parse3339(svrTimeStr);

    Time clientTime = new  Time();
    clientTime.setToNow();
    return svrTime.compare( svrTime, clientTime);
}
于 2013-10-17T22:32:14.793 回答