2013-05-13 4 views
0

Я работаю с правилом WODM дизайнера V7.5, мой XOM является XSDСтрока даты + лечение + дата в строку

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

Дата в моем XOM являются Строками, поэтому в BOM К Хомам Mapping части моей BOM Я создал 2 метод:

  • тот, который возвращает текущую дату в качестве строка, вербализованная как: сегодня в календаре

    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    Date date = new Date(); 
    String s = dateFormat.format(date); 
    return s; 
    
  • один, который принимает строку, преобразовать его в формат Date, добавляет 1 к лет и возвращает строку, Verbalized как: {этого} NewDate ({0})

    String[] splitdata = d1.split("-"); 
    int month = Integer.parseInt(splitdata[0]); 
    int day = Integer.parseInt(splitdata[1]); 
    int year = Integer.parseInt(splitdata[2]); 
    Calendar cal = Calendar.getInstance(); 
    cal.set(year, month, day); 
    Date date = cal.getTime(); 
    date.setYear(date.getYear() + 1); 
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    String s = dateFormat.format(date); 
    return s; 
    

Верховенство заключается в следующем:

definitions 
set 'variable1' to calendar NewDate (the transaction date of transaction) ; 
if 
    the transaction date of transaction is today on the calendar 
    then 
     set the expiration date of account to variable1 ; 

Я ввожу дату сделки, как это: «2013-05-13», я ожидал: «2014-05-13» в истечения но я получаю это 0181-10-05

Любой может помочь? Благодарю.

ответ

2

Ваш способ разделения строки неверен, поскольку год вводится в качестве 1-го поля, и вы пытаетесь получить дату из этого поля, то есть порядок полей.

По сути, ваш код должен содержать (обратите внимание на индексы):

int month=Integer.parseInt(splitdata[1]); 
int day=Integer.parseInt(splitdata[2]); 
int year=Integer.parseInt(splitdata[0]);