在我的Android应用程序中,我通过HTTP请求以下列格式获取日期和时间。
Tue Apr 17 16:23:33 IST 2012
现在我想计算那个时间和当前时间之间的时差。我有很多方法来计算互联网上的时差,但所有这些解决方案都有不同的格式。我如何用上述时间格式计算时差?
修改 这是我用它工作正常的代码。
DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
Date dateOne = df.parse("Tue apr 22 13:07:32 IST 2012");
Date dateTwo = df.parse("Tue Apr 22 13:07:33 IST 2012");
long timeDiff = Math.abs(dateOne.getTime() - dateTwo.getTime());
System.out.println("difference:" + timeDiff); //differencs in ms
但是我必须以“Tue apr 22 13:07:32 IST 2012”的格式获取当前时间才能用作dateTwo。
答案 0 :(得分:6)
你也可以这个代码:::
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
Date dateOne = df.parse("2011-02-08 10:00:00 +0300");
Date dateTwo = df.parse("2011-02-08 08:00:00 +0100");
long timeDiff = Math.abs(dateOne.getTime() - dateTwo.getTime());
System.out.println("difference:" + timeDiff); // difference: 0
答案 1 :(得分:1)
试试这段代码
Date pdate = /* your date comming from HTTP */
Date cdate = new Date(System.currentTimeMillis());
long difference = cdate.getTime() - pdate.getTime();
答案 2 :(得分:1)
使用描述上述日期的模式创建SimpleDateFormat(String pattern)
的对象。
接下来使用parse(String)
并将日期字符串传递给它。它应该返回一个Date
对象。
然后,您可以使用Date.getDateInstance().getTime()
来获取当前时间。
获取时间差是从当前时间减去服务器时间的问题。
答案 3 :(得分:0)
您可以使用以下代码执行此操作。
String format = "Tue Apr 17 16:23:33 IST 2012";
int month = 0;
Calendar yourDate = Calendar.getInstance();
String[] months = new String[] { "Jan", "Feb", "Mar", "Apr", "May",
"Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
String datArr[] = format.split(" ");
String[] time = datArr[3].split(":");
for (int i = 0; i < months.length; i++) {
if (months[i] == datArr[1]) {
month = i;
}
}
yourDate.set(Integer.parseInt(datArr[5]), month, Integer.parseInt(datArr[2]), Integer.parseInt(time[0]),
Integer.parseInt(time[1]));
Log.i("Your Date= ", yourDate.toString());
Log.i("Now Date= ",Calendar.getInstance().toString());
使用此功能可以获得这两个日期之间的时差。
答案 4 :(得分:0)
您可以使用此方法计算时间差(以毫秒为单位),并以秒,分钟,小时,天,月和年为单位获取输出。
您可以从此处下载课程:DateTimeDifference GitHub Link
long currentTime = System.currentTimeMillis(); long previousTime = (System.currentTimeMillis() - 864000000); //10 days ago Log.d("DateTime: ", "Difference With Second: " + AppUtility.DateTimeDifference(currentTime, previousTime, AppUtility.TimeDifference.SECOND)); Log.d("DateTime: ", "Difference With Minute: " + AppUtility.DateTimeDifference(currentTime, previousTime, AppUtility.TimeDifference.MINUTE));
if(AppUtility.DateTimeDifference(currentTime, previousTime, AppUtility.TimeDifference.MINUTE) > 100){ Log.d("DateTime: ", "There are more than 100 minutes difference between two dates."); }else{ Log.d("DateTime: ", "There are no more than 100 minutes difference between two dates."); }