Java десятичное значение даты - PullRequest
2 голосов
/ 17 декабря 2010

Я пытаюсь что-то сделать, и я не совсем уверен, как к этому приблизиться.У меня есть два пользовательских значения ..... длительность и единица длительности.На данный момент у меня уже будет дата начала, поэтому я хочу как-то применить продолжительность и durationUnit к startDate для получения endDate.

Длительность - это десятичное число, durationUnit - значение HardCode / AbstractCode, а startDate - дата.

Таким образом, если startDate - 17/12/2010 ...... и пользователь вводит следующее:

Продолжительность: 3 Продолжительность Единица: Месяцы

Iхотите, чтобы endDate затем была рассчитана как 17/03/2011.Есть идеи, как я могу это сделать?Единицей длительности может быть Дни, Месяцы или Годы.

Заранее спасибо!

Ответы [ 5 ]

3 голосов
/ 17 декабря 2010

Посмотрите на йода-время . Это отличная замена для даты / календаря. Вы можете делать такие вещи, как:

DateTime newDate = startDate.plusDays(days);
                            .plusYears(years);

Period toAdd = periodFormatter.parse(inputString);
DateTime newDate = startDate.plus(toAdd);
1 голос
/ 17 декабря 2010

Вы можете сопоставить день / месяц / год с соответствующим календарным днем, месяцем или годом.Затем используйте calendar.add ().Если под десятичным числом вы подразумеваете двойное число, вам, вероятно, придется выполнить некоторую обработку, чтобы преобразовать части значения в соответствующие значения (например, изменить .5 ДЕНЬ на 12 часов).

0 голосов
/ 17 декабря 2010

Другие уже говорили, вот более конкретный пример с использованием java.util.Calendar:

Calendar cal = Calendar.getInstance();
cal.setTime(startDate);

if(durationUnit.equals("day")){
   cal.add(Calendar.DATE, duration);
} else if(durationUnit.equals("month")){
   cal.add(Calendar.MONTH, duration);
} else if(durationUnit.equals("year")){
   cal.add(Calendar.YEAR, duration);
}

Date endDate = cal.getTime();
0 голосов
/ 17 декабря 2010

Не пробовали ли вы использовать тип даты

Date myDate = new Date();
myDate.setMonth();
myDate.setDay();

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

0 голосов
/ 17 декабря 2010

DateFormatter также полезен, если вы хотите, чтобы дата была представлена ​​в разных стилях.Здесь, для краткости, методы вызываются для классов, которые вы должны сначала установить, используя фабрику или конструктор.Следующие утверждения предназначены только для понимания идеи.Обратитесь к API JavaDoc для получения дополнительной информации.


Calendar.set(...) //(to set year, month and day).
Calendar.add(...)//(to add a value on specific unit (month, day or year))
Calendar.getInstance() //(return Date object)
DateFormat.format(..) //(return a String representing a style used at instantiation of //DateFormat)
...