日期和日期格式计算Android

时间:2016-02-17 13:21:47

标签: android date datetime date-format

我有一个日期计算功能。它比较了我已经检索过的数据库,以及我传递的来自和迄今为止的输入。在调试时,它在for循环中分配后显示错误的日期。(输入和数据库日期)下面我用图像显示了示例。

功能代码:

/*String[] veh - vehicle name, String[] from - table from date array,
 * String[] to - table to date array,String from1 - input from date, String to1 - input to date*/
private List getDateComparison(String[] veh, String[] from, String[] to,String from1, String to1) throws ParseException {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:MM",Locale.ENGLISH);
    Date table_from,table_to,input_from,input_to;
    long diff=0,diff1=0,diff2=0,diff3=0;
    int count=0,county=0;;

    for(int i=0;i<veh.length;i++){
        table_from=df.parse(from[i]);
        table_to=df.parse(to[i]);
        input_from=df.parse(from1);
        input_to=df.parse(to1);
        table_from=df.parse(df.format(table_from));
        table_to=df.parse(df.format(table_to));
        input_from=df.parse(df.format(input_from));
        input_to=df.parse(df.format(input_to));
        diff=table_from.getTime()-input_from.getTime();
        diff1=table_from.getTime()-input_to.getTime();
        diff2=input_from.getTime()-table_to.getTime();
        diff3=input_to.getTime()-table_to.getTime();
        if((diff > 0 && diff1>0) || (diff2 > 0 && diff3>0)){
            count++;
            removeAndAddList(veh[i],1);
            Log.d("Date", " ok with from");
        }
        else {
            county = 100;
            removeAndAddList(veh[i],2);
        }
    }
    return vehic;//= veh[0];
}

调试时的功能截图:

enter image description here

编辑:

在我使用日期格式之前,

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH);

那时计算工作得很好。现在它在日期格式上遇到了一些问题。我认为我的dateformat在for循环中做错了。在使用dateformat分配日期后显示更大的日期。我做错了什么?

1 个答案:

答案 0 :(得分:1)

您用于SDF的格式不正确

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:MM",Locale.ENGLISH);

M 表示年月,您将其用作分钟。

更改为HH:mm ... = new SimpleDateFormat("yyyy-MM-dd HH:mm",Locale.ENGLISH);

<强> 题外话: 而不是使用diff=table_from.getTime()-input_from.getTime();,您可以使用after()

before()Date方法

您可以将日期与以下内容进行比较(来自您的代码):

if((diff > 0 && diff1>0) || (diff2 > 0 && diff3>0)){

将是:

if((table_from.after(input_from) && table_from.after(input_to)) 
|| (input_from.after(table_to) && input_to.after(table_to))){

现在您可以从代码中删除所有getTime()减法行(4行)