首页 > 解决方案 > 根据电子表格区域设置获取时间格式?

问题描述

我想Date()根据电子表格的语言环境(SpreadsheetApp.getActive().getSpreadsheetLocale())以正确的格式将 Javascript 对象存储在电子表格中。
有没有办法从电子表格语言环境中获取特定于国家/地区的(日期和)时间格式字符串?
例如,当区域设置为 de_DE 时,时间格式字符串为hh:mm
但当区域设置为 da_DK 时,时间格式字符串为hh.mm
Interesting 以及如何获取国家货币格式。

顺便说一句,当我有日期和时间de_DE而不是更改为 时da_DK,日期被重新格式化(23.01.2020 -> 23/01/2020)但时间不是(它保持为22:59)。这是电子表格中的错误吗?

标签: datetimegoogle-apps-scriptgoogle-sheetslocalenumber-formatting

解决方案


JavaScript 中的日期具有toLocaleDateString方法,该方法返回根据指定区域设置格式化的字符串。但这似乎不适用于 Apps 脚本。

如果您愿意为此使用Apps Script Web App,您可以toLocaleDateString在客户端脚本(即 HTML 中的脚本标记)中使用它。

如果不是这种情况,我认为您最好的选择是自己创建格式和语言环境之间的关系,因为 Apps Script 没有内置方法来实现这一点。例如,您可以使用一个检查语言环境的switch语句,然后使用Utilities.formatDate(Apps 脚本用于格式化日期的工具)相应地格式化日期。它可能是以下几行:

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;

参考:

我希望这有任何帮助。


推荐阅读