我想以格式获取设备上的当前时间: 2013-10-17 15:45:01 ?
服务器将上述格式的对象的日期作为字符串发送给我。现在我想获取手机当前时间,然后检查是否有超过 5 分钟的差异?
所以 A:我怎样才能以这种格式获取设备的当前时间:2013-10-17 15:45:01
B 我怎样才能算出两者之间的区别。
您可以使用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()
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();
使用 SimpleDateFromat 类
DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
dateFormatter.format(date);
另请检查此文档
如果您可以要求服务器向您发送符合 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);
}