Не удается найти функцию parseInt в объекте

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

У меня возникают проблемы при попытке проанализировать дату из ячеек электронной таблицы. Когда я получаю значение даты в ячейке, он фактически не возвращает объект Date, поэтому я не могу создать дату прямо из значений, полученных из ячейки. Однако я могу преобразовать его в строку, а затем разбить строку на маркеры пространства, чтобы получить год, месяц и день. Вот здесь и возникает проблема; это не позволит мне выполнить .parseInt() для результирующей переменной, и я не могу понять, почему. Пока что код функции, которую я делаю для преобразования даты, полученной из электронной таблицы, выглядит следующим образом:

function convertToDateObject(date)
{
  var months = 
      {
        'Jan' : '01',
        'Feb' : '02',
        'Mar' : '03',
        'Apr' : '04',
        'May' : '05',
        'Jun' : '06',
        'Jul' : '07',
        'Aug' : '08',
        'Sep' : '09',
        'Oct' : '10',
        'Nov' : '11',
        'Dec' : '12'
      };

  var dateArray = date.toString().split(" ");
  var month = dateArray[1].parseInt(); // This is actually in the form of name (e.g. Jan, Feb, etc.), but I know how to change this already 
  var day = dateArray[2].parseInt();
  var year = dateArray[3].parseInt();
}

Пока это все, что у меня есть, потому что при попытке скомпилировать я получаю сообщение об ошибке: "Не удается найти функцию parseInt в объекте..."

Если я делаю тип месяца, дня или года, он возвращает строку. Может кто-нибудь мне помочь?


person Geoff    schedule 15.05.2014    source источник


Ответы (1)


String не имеет никакого parseInt метода. parseInt — это глобальная функция http://www.w3schools.com/jsref/jsref_parseint.asp

  var dateArray = date.toString().split(" ");
  var month = parseInt(dateArray[1], 10); // This is actually in the form of name (e.g. Jan, Feb, etc.), but I know how to change this already 
  var day = parseInt(dateArray[2], 10);
  var year = parseInt(dateArray[3], 10);
person 0101    schedule 15.05.2014
comment
Ого, не могу поверить, что совершил такую ​​глупую ошибку... По какой-то причине я думал, что parseInt() является членом класса String. Если я не упустил из виду что-то действительно простое, я не могу анализировать даты, возвращаемые электронной таблицей, с использованием методов Date, потому что они на самом деле не являются объектами Date. - person Geoff; 15.05.2014
comment
Извините, я не прочитал ваше описание полностью, поэтому подумал, что дата - это объект даты. - person 0101; 15.05.2014
comment
Пожалуйста, используйте основание (второй параметр parseInt). В этом случае вы, скорее всего, получите числа, которые выглядят восьмеричными (например, 08) и без них будут неправильно проанализированы. - person James; 15.05.2014