2012-03-28 5 views
1

Я могу увеличивать и уменьшать дату в своем приложении Blackberry.Проблема с приращением даты

Проблема возникает, когда я изменяю некоторые данные во всплывающем окне и нажимаю на следующую дату, но остается без изменений, но длительное значение такое же, как и приращение.

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 вывод, что это старая дата только даже если длинное значение показывает приращение данных.

+1

Рассмотрите возможность использования java.util.date для нормализации данных в формате временной шкалы unix. Вы можете избежать множества проблем, используя математику в этом формате и используя формат dd mm yyyy только для пользовательской презентации. – rosco

ответ

3

Вы можете использовать этот класс

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(); 
    } 
} 
-1

Календарь класс выставляет добавить метод, который следует использовать для добавления/вычитаем элементы даты. Вот пример добавления одного дня к дате, представленной строкой:

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()); 
    } 

} 
+0

и для вычитания дня вам просто нужно «добавить» отрицательный пример. 'calendar.add (Calendar.DAY_OF_YEAR, -1);' – radimpe

+1

@daniel calendar.add не является частью ежевичного календаря api –

Смежные вопросы