3

在我的 android 应用程序中,我通过 HTTP 请求获取以下格式的日期和时间。

2012 年 4 月 17 日星期二 16:23:33 IST

现在我想计算那个时间和当前时间之间的时差。我有很多方法可以在互联网上计算时差,但是所有这些解决方案都有不同的格式。我怎样才能用上述时间格式计算时差?

编辑: 这是我使用它工作正常的代码。

  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

但我必须以“2012 年 4 月 22 日星期二 13:07:32 IST 2012”格式获取当前时间才能用作 dateTwo。

4

5 回答 5

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
于 2012-04-18T05:10:48.843 回答
1

试试这个代码

Date pdate = /* your date comming from HTTP */
Date cdate = new Date(System.currentTimeMillis());

long difference = cdate.getTime() - pdate.getTime();
于 2012-04-18T05:04:31.577 回答
1

创建一个SimpleDateFormat(String pattern)使用上述描述您的日期的模式的对象。

接下来使用parse(String)并将日期字符串传递给它。它应该返回一个Date对象。然后,您可以使用Date.getDateInstance().getTime()获取当前时间。

然后,获取时间差就是从当前时间中减去服务器时间。

于 2012-04-18T05:06:13.607 回答
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());

使用它,您可以获得这两个日期之间的时差。

于 2012-04-18T05:10:57.783 回答
0

您可以使用此方法计算以毫秒为单位的时间差,并以秒、分钟、小时、天、月和年为单位获得输出。

您可以从这里下载课程:DateTimeDifference GitHub 链接

  • 使用简单
long currentTime = System.currentTimeMillis();
long previousTime = (System.currentTimeMillis() - 864000000); //10天前

Log.d("DateTime: ", "与秒的差异:" + AppUtility.DateTimeDifference(currentTime, previousTime, AppUtility.TimeDifference.SECOND));
Log.d("DateTime: ", "与分钟的差异:" + AppUtility.DateTimeDifference(currentTime, previousTime, AppUtility.TimeDifference.MINUTE));
  • 您可以比较下面的示例
if(AppUtility.DateTimeDifference(currentTime, previousTime, AppUtility.TimeDifference.MINUTE) > 100){
    Log.d("DateTime:", "两个日期相差超过100分钟。");
}别的{
    Log.d("DateTime:", "两个日期相差不超过100分钟。");
}
于 2017-08-15T20:37:16.160 回答