在android中获得时差吗?

时间:2012-04-18 04:41:44

标签: android datetime

在我的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。

5 个答案:

答案 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.");
}