计算两个日期之间的天数

时间:2012-11-27 09:41:55

标签: java android datetime time calendar

我有一个要求,比如计算两个日期之间的剩余天数。它对我来说很好。但问题是,当我将建筑物送到英国时,它在印度的展示时间比印度少一天(例如:印度:215天,但在英国:214天)。我使用以下代码:

public static int noOfDays(String currDate, String tarDate){
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    Date date1 = null;
    Date date2 = null;

    try {
        date1 = sdf.parse(currDate);
        date2 = sdf.parse(tarDate);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return (int)( (date2.getTime() - date1.getTime()) / (1000 * 60 * 60 * 24));
}   

获取当前日期:

public static String getcurrentdate()
{
    Calendar now = Calendar.getInstance();

    int month = now.get(Calendar.MONTH) + 1;
    int year = now.get(Calendar.YEAR);
    int day = now.get(Calendar.DATE);
    return day+"/"+month+"/"+year;
}

我相信Calendar now = Calendar.getInstance();将仅提供本地时区实例。如果它是正确的,它应该在任何位置给出相同的结果。但结果似乎不同。请帮我解决这个问题。

谢谢, 内甚

3 个答案:

答案 0 :(得分:1)

存储和执行时间计算时,应将所有时间戳存储为UTC。然后将Timezone明确设置为UTC 如果必须在显示器上显示本地时间,则必须在显示之前立即转换Utc时间戳,不要将本地时间存储在数据库中。
如果您需要本地时间,则需要存储额外的时区信息以及您的时间。

答案 1 :(得分:1)

您需要设置Calendar类的TimeZone。您可以写下:

Calender.setTimeZone(timeZone);

您可以使用以下命令获取运行该应用的位置的TimeZone:

TimeZone.getDefault();

答案 2 :(得分:0)

使用JodaTime库进行日期计算,并始终以UTC格式存储日期。