Как принять формат YY / MM / DD в листах Google - PullRequest
0 голосов
/ 01 ноября 2019

Я запускаю некоторый код, который использует и вводит отчет из другой системы и использует данные. Этот отчет включает столбец дат в формате YY / MM / DD. Когда я пытаюсь работать с этими данными, электронная таблица и мой код интерпретируют ее как DD / MM / YY. ех. 16 июля 2019 года интерпретируется как 19 июля 2016 года.

Прочитав ряд других сообщений, я понимаю, что это вопрос того, в какой локали отформатирована электронная таблица. Я пробовал несколько форматов, но могуне удается найти языковой стандарт в формате YY / MM / DD

Существует ли языковой стандарт в формате YY / MM / DD? Есть ли какой-нибудь другой способ, которым я могу легко конвертировать эти даты? Со временем у меня будет много данных, ручная настройка и индивидуальный поиск / замена - не варианты.

В худшем случае, я думаю, я могу сохранить данные в массиве и перебрать их, отредактировав их в виде строки, чтобы сдвинуть "YY" и "DD", но это кажется неэффективным, и как будто некоторые должны быть построеныв функциональности.

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

https://docs.google.com/spreadsheets/d/1fLboQyF1ChEAFCpXTeDMU6su55oTgi67EpO_5MTPIdQ/edit?usp=sharing

Также, некоторые примерыcode:

 if (Utilities.formatDate(new Date(SelectionList[y][0]), timeZone, 'yyyy-MMM-dd') == Utilities.formatDate(new Date(TotalData[x][2]), timeZone, 'yyyy-MMM-dd')) {
      //SelectionList[y][0] == TotalData[x][2]) {
      var Surgeon = SelectionList[y][1];
      break;
          }
      }

Как видите, я вызываю две даты из двух массивов (SelectionList [y] [0] и TotalData [x] [2]), а затем пытаюсь найти точку, в которой ониравны. SelectionList - это константа, которую я создал, и поэтому отформатировал ее в формате DD / MM / YYYY, потому что я знал, что это работающий формат. TotalData генерируется отчет и автоматически заполняется в YY / MM / DD. Когда я пытаюсь использовать Utilities.FormatDate, скрипт неверно интерпретирует даты TotalData из-за этого. Честно говоря, меня меньше волнует сценарий, потому что я знаю, почему он не работает. Если я смогу исправить то, как электронная таблица интерпретирует исходную дату, тогда сценарий будет работать нормально.

При редактировании этого ответа я заметил еще одну вещь: когда я выбираю ячейку предоставления, когда ячейка показывает отформатированную дату 18/07/16, строка формул показывает 2016-07-18, ясно показывая, чтоэлектронная таблица интерпретирует 16 как YY.

Кроме того, я просматриваю данные по месяцам. другие месяцы работали без проблем. Теперь я вижу, что ошибка происходит, потому что в начале этого месяца не было никаких данных в течение первых двух недель. Месяцы, которые начинались с 19.06.02, автоматически интерпретировались как ГГ / ММ / ДД по причине, которая ускользает от меня. Это не работает так же в моем тестовом листе.

Ответы [ 3 ]

0 голосов
/ 01 ноября 2019

Вы также можете перейти в верхнее меню Format -> Number -> Other Format -> Other format date and time и затем выбрать, какое вы хотите

0 голосов
/ 01 ноября 2019

Предполагая, что даты, которые вы хотите изменить, находятся в столбце А, начиная со строки 2, я написал небольшой код, который меняет дату так, как вы хотите:

function changeDates() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var values = sheet.getRange("A2:A").getValues();
  for(var i = 0; i < values.length; i++) {
    var value = values[i][0];
    var date = new Date(value);
    var day = date.getYear().toString();
    if(day.length == 4) { 
      day = day.slice(2); // Remove first two characters if input format has four characters (i.e. '2018')
    };
    var year = date.getDate();
    if(year.length == 2) { // Add '20' or '200' to the year depending on current day format
      year = '20'.concat(year);
    } else if(year.length == 1) {
      year = '200'.concat(year);
    }
    date.setDate(day);
    date.setYear(year);
    sheet.getRange(2 + i, 1).setValue(date);
  };
};

Я надеюсь, что этопомощь.

0 голосов
/ 01 ноября 2019

посмотрим, не поможет ли это вам в чем-либо!

enter image description here

...