Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算两个日期之间的天数_Java_Android_Datetime_Time_Calendar - Fatal编程技术网

Java 计算两个日期之间的天数

Java 计算两个日期之间的天数,java,android,datetime,time,calendar,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

我有一个要求,比如计算两个日期之间的剩余天数。这对我来说很好。但问题是,当我将构建发送到英国时,它显示的时间比印度少了一天(例如:印度: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();will仅给出本地时区实例。如果正确,则在任何位置都应给出相同的结果。但结果似乎不同。请帮我解决这个问题

谢谢,
Ganesh

在存储和执行时间计算时,应以UTC格式存储所有时间戳。然后将时区显式设置为UTC。
如果必须在显示器上显示本地时间,则必须在显示之前立即转换Utc时间戳,不要将本地时间存储在数据库中。

如果您需要localtime,则需要将其他时区信息与utc时间一起存储。

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

您需要设置日历类的时区。您可以通过以下方式进行操作:

Calender.setTimeZone(timeZone);
您可以使用以下命令获取应用程序运行位置的时区:

TimeZone.getDefault();

您可以使用Calendar.setTimeZone()方法设置英国时区查看当前日期从部署计算机的当前时间获取,设置时区不建议使用Joda time library。