Java 日期递增问题

Java 日期递增问题,java,blackberry,java-me,Java,Blackberry,Java Me,我可以在我的黑莓应用程序中增减日期 当我在弹出屏幕中更改一些数据并单击“下一步”时,问题就出现了。日期保持不变,但不递增,但长值与递增值相同 Calendar calendar = Calendar.getInstance(); String dateFormat = compareDate; //mar 28,2012-compare date value String m = dateFormat.substring(0, 3); String dd = dateFormat.subst

我可以在我的黑莓应用程序中增减日期

当我在弹出屏幕中更改一些数据并单击“下一步”时,问题就出现了。日期保持不变,但不递增,但长值与递增值相同

Calendar calendar = Calendar.getInstance(); 
String dateFormat = compareDate; //mar 28,2012-compare date value
String m = dateFormat.substring(0, 3); 
String dd = dateFormat.substring(4, 6); 
String y = dateFormat.substring(7, 11);
dateFormat = dd + " " + m + " " + y; // 28 mar 2012

long dateLong = HttpDateParser.parse(dateFormat);
long ctimeMinus50Days = dateLong + 1L * ((long) DateTimeUtilities.ONEDAY); 
calendar.setTime ( new Date(ctimeMinus50Days) ); 
System.out.println("ctimeMinus50Days" + ctimeMinus50Days);

Date d = calendar.getTime();
SimpleDateFormat sd1Exactform = new SimpleDateFormat("MMM dd,yyyy"); 
sd1Exactform.format(d);

if (dateCurrent != null) {  //static value so making null before assigning new value
    dateCurrent = null; 
}
dateCurrent = sd1Exactform.format(d);
ctimeMinus50Days
值在用于增量时是相同的,但当我看到
dateCurrent
输出时,它只是旧日期,即使长值显示增量数据。

您可以使用该类

public class DateUtilities {
    static Calendar calendar = Calendar.getInstance();
    public static long getPreviousDate(long currentDate){
        calendar.setTime(new Date(currentDate));
        calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) - 1);
        return calendar.getTime().getTime();
    }
    public static long getNextDate(long currentDate){
        calendar.setTime(new Date(currentDate));
        calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + 1);
        return calendar.getTime().getTime();
    }
}

Calendar类公开了用于添加/减去日期元素的add方法。下面是一个向字符串表示的日期添加一天的示例:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Test {

public static void main(String[] args) throws Exception{
    String dateCurrent = "Mar 1,2012";
    SimpleDateFormat sdExactform = new SimpleDateFormat("MMM d,yyyy");
    Date date = sdExactform.parse(dateCurrent);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.DATE, 1);
    System.out.println(calendar.toString());
    }

}

考虑使用JavaUTL.DATE在UNIX时间戳格式中规范数据。使用该格式的数学运算和使用dd-mm-yyyy格式仅用于用户演示可以避免许多问题。要减去一天,只需“添加”一个负数,例如,
calendar.add(calendar.day\u of_YEAR,-1)@daniel calendar.add不是blackberry calendar api的一部分