Сценарий приложений Google: получить формат даты и времени в соответствии с языковым стандартом электронной таблицы? - PullRequest
1 голос
/ 24 января 2020

Я хочу сохранить объект Javascript Date () в электронной таблице в правильном формате в соответствии с языковым стандартом электронной таблицы (SpreadsheetApp.getActive (). GetSpreadsheetLocale ()).
Существует ли способ получить указанную страну c (дата и) строка формата времени из локали электронной таблицы?
Например, если локаль - de_DE, строка формата времени - чч: мм
, но когда локаль - da_DK, строка формата времени - чч.мм
Интересно а также как получить формат валюты стран.

Кстати, когда у меня есть дата и время в de_DE, а затем меняются на da_DK, даты переформатируются (23.01.2020 -> 23/01/2020), но времена не (остается 22:59). Это ошибка в электронной таблице?

Ответы [ 3 ]

1 голос
/ 24 января 2020

Даты в JavaScript имеют метод toLocaleDateString , который возвращает строку, отформатированную в соответствии с указанным языковым стандартом. Но это не похоже на работу в скрипте приложений.

Если вы открыты для использования Apps Script Web App для этого, вы можете использовать это toLocaleDateString в своем клиентском скрипте (то есть в теге скрипта в вашем HTML).

Если это не так, я думаю, что вашим лучшим вариантом будет создание отношений между форматами и локалями самостоятельно, потому что в скрипте приложений нет встроенного метода для достижения этой цели. Например, вы можете использовать оператор switch , который будет проверять локаль, а затем соответствующим образом отформатировать дату с помощью Utilities.formatDate , инструмента Apps Script, используемого для форматирования дат. Это может быть что-то вроде следующего:

var locale = SpreadsheetApp.getActive().getSpreadsheetLocale();
var formattedDate;
switch (locale) {
  case 'de_DE':
    formattedDate = Utilities.formatDate(yourDate, yourTimeZone, "hh:mm");
    break;
  case 'da_DK':
    formattedDate = Utilities.formatDate(yourDate, yourTimeZone, "hh.mm");
    break;
    // ...
}
return formattedDate;

Ссылка:

Надеюсь, это поможет.

1 голос
/ 25 января 2020

Извините за это, однако я нашел функцию, которую стоило бы проверить, это toLocaleDateString () и toLocaleTimeString (), они предоставляют локальный формат даты и времени. Пожалуйста, проверьте Форматы fechas JavaScript.

Я сделал тест из Google Apps Script, и он выдает мне следующее

function pruebafecha() {
  var d = new Date();
  var n = d.toLocaleDateString();
  var h = d.toLocaleTimeString();
  Logger.log(n);
  Logger.log(h);
}

This is the answer(Colombia): 
[20-01-24 16:47:50:286 EST] 24 de enero de 2020
[20-01-24 16:47:50:287 EST] 16:47:50 EST
0 голосов
/ 24 января 2020

Я не очень хорошо знаю конфигурацию упомянутого вами листа. Тем не менее, я делюсь кодом, который я использую для печати даты и времени отправки данных формы.

var d = new Date();
var hour = d.getHours()-1;
var min = d.getMinutes();
var day = d.getDate();
var month = d.getMonth()+1;
var year = d.getFullYear();

if (month<10) {dia = day+"/"+"0"+month+"/"+year;}
 else {dia = day+"/"+month+"/"+year;}
 if (min<10){time = hour+":"+"0"+min;}
 else {time = hour+":"+min;}

В коде я принимаю значения дня, месяца и года Я добавляю 1 к значению месяца, потому что он принимает значения [0:11] => [Jan, Dec]. Затем я создаю нужный формат из даты и времени, и вы можете заметить, что у меня осталось 1 часа, потому что когда я проводил тесты, я заметил, что время сценария было на час выше.

I используйте гугл переводчик, надеюсь это понятно.

...