2015-03-24 9 views
0

Когда я использую функцию ниже единственного момента, когда она успешно возвращается, я использую ее только для одной строки. Если я попытаюсь вызывать функцию несколько раз в коде против разных уникальных строк, она возвращает ошибку «неповрежденной даты».Javascript: Функция работает корректно только при использовании одного экземпляра в коде

function oraDate(str) { 
    if(str.length > 0){ 
     channelMap.put("StringCount", str.length); 
     if(str.length == 8){ 
      channelMap.put("8 characters", "Date only"); 
      var date = str.substring(0, 8); 
      var cDate = DateUtil.convertDate("yyyyMMdd", "yyyy-MM-dd", date); 
      return cDate + 'T' + '00:00:00'; 

     } else if(str.length == 12){ 
      channelMap.put("12 characters", "Date/time only"); 
      var date = str.substring(0, 8); 
      var time = str.substring(8, 12); 
      var cDate = DateUtil.convertDate("yyyyMMddHHmm", "yyyy-MM-dd'T'HH:mm", date); 
      return cDate+':00'; 

     } else if(str.length >= 14){ 
      channelMap.put("14 characters", "Date/time w/seconds only"); 
      var date = str.substring(0, 8); 
      var time = str.substring(8, 14); 
      var date_time = date+time; 
      var cDate = DateUtil.convertDate("yyyyMMddHHmmss", "yyyy-MM-dd'T'HH:mm:ss", date_time); 
      return cDate; 
     } 

    } else { 
     return '0001-01-01T00:00:00'; 
    } 
} 
+0

как ошибка говорит, один из времени вы призывающий формат функция строки не соответствуют формату дата ... –

+0

Что is'channelMap'? Что такое 'DateUtil.convertDate'? Где ошибка? – Bergi

+0

В случае '12' вы никогда не используете' time', а только 'date'. Может быть, это проблема для парсера? – Bergi

ответ

0

Я забыл вернуться сюда, чтобы опубликовать исправление. Я пропустил переменную «date_time» для проверки 12 символов.

function oraDate(str) { 
if(str.length > 0){ 
    channelMap.put("StringCount", str.length); 
    if(str.length == 8){ 
     channelMap.put("8 characters", "Date only"); 
     var date = str.substring(0, 8); 
     var cDate = DateUtil.convertDate("yyyyMMdd", "yyyy-MM-dd", date); 
     return cDate + 'T' + '00:00:00'; 

    } else if(str.length == 12){ 
     channelMap.put("12 characters", "Date/time only"); 
     var date = str.substring(0, 8); 
     var time = str.substring(8, 12); 
     var date_time = date+time; 
     var cDate = DateUtil.convertDate("yyyyMMddHHmm", "yyyy-MM-dd'T'HH:mm", date_time); 
     return cDate+':00'; 

    } else if(str.length >= 14){ 
     channelMap.put("14 characters", "Date/time w/seconds only"); 
     var date = str.substring(0, 8); 
     var time = str.substring(8, 14); 
     var date_time = date+time; 
     var cDate = DateUtil.convertDate("yyyyMMddHHmmss", "yyyy-MM-dd'T'HH:mm:ss", date_time); 
     return cDate; 
    } 

} else { 
    return '0001-01-01T00:00:00'; 
} 

}