gpt4 book ai didi

javascript - 通过将点替换为斜线来格式化日期的问题

转载 作者:行者123 更新时间:2023-12-03 08:20:07 26 4
gpt4 key购买 nike

我在 Google 电子表格上的电子表格中有两列,分别是 row[0]row[1]。其中的日期初步写为 dd.mm.yyyy 而我想用 / 自动替换 . 并将日期格式化为dd/mm/yyyy 但不要将这些 dd/mm/yyyy 转换为例如 Fri Sep 02 2016 00:00:00 GMT+ 0300 (MSK) 在脚本的第二次迭代中

我在 Stackoverflow 上搜索了这个并找到了很多提示,但不幸的是我没有成功达到预期的结果。

以下是我发现的内容以及我尝试添加的内容:Replacing all dots in a string with backslashes in Java。观察到同样的负面影响。

这是我的源代码:

function FormatCheckInAndCheckOutDates() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // Строка с первым бронированием для начала обработки
var numRows = sheet.getLastRow()-1; // Количество строк с бронированиями для обработки
var dataRange = sheet.getRange(startRow, 1, numRows, 3); // Охват столбцов для обработки ячеек, в данном случае с 1-го по 3-й.
var data = dataRange.getValues(); // Получить значение ячеек в каждой ячейке каждой строке в рамках столбцов, охваченных верхним кодом.
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var checkInDate = row[0].toString().valueOf();
var checkOutDate = row[1].toString().valueOf();
var replaceDotsInCheckIn = checkInDate.replace(".", "/");
var replaceDotsInCheckOut = checkOutDate.replace(".", "/");
sheet.getRange(startRow + i, 1).setValue(replaceDotsInCheckIn);
sheet.getRange(startRow + i, 2).setValue(replaceDotsInCheckOut);
SpreadsheetApp.flush(); // Здесь завершается обновление ячеек 17-го столбца, в котором проставляется статус отправки уведомлений.
Logger.log("Произведена замена точек на слэши в датах заезда и выезда всех существующих бронирований.");
}
}

当我第二次/第三次/......运行我的脚本?提前强烈感谢任何有关相关建议的帮助。


UPD № 1。有了上面的评论和一个答案,我更新了我的源代码,现在是:

function FormatCheckInAndCheckOutDates() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // Строка с первым бронированием для начала обработки
var numRows = sheet.getLastRow()-1; // Количество строк с бронированиями для обработки
var dataRange = sheet.getRange(startRow, 1, numRows, 3); // Охват столбцов для обработки ячеек, в данном случае с 1-го по 3-й.
var data = dataRange.getValues(); // Получить значение ячеек в каждой ячейке каждой строке в рамках столбцов, охваченных верхним кодом.
for (var i = 0; i < data.length; ++i) {
var row = data[i];

/* var checkInDate = row[0].toString().valueOf();
var checkOutDate = row[1].toString().valueOf(); */

var checkInDate = new Date(row[0].replace(/\./g, '/'));
var checkOutDate = new Date(row[1].replace(/\./g, '/'));

var replaceDotsInCheckIn = (checkInDate.getMonth() + 1).toString() + '/' + checkInDate.getDate().toString() + '/' + checkInDate.getFullYear().toString();
var replaceDotsInCheckOut = (checkOutDate.getMonth() + 1).toString() + '/' + checkOutDate.getDate().toString() + '/' + checkOutDate.getFullYear().toString();
sheet.getRange(startRow + i, 1).setValue(replaceDotsInCheckIn);
sheet.getRange(startRow + i, 2).setValue(replaceDotsInCheckOut);
SpreadsheetApp.flush(); // Здесь завершается обновление ячеек 17-го столбца, в котором проставляется статус отправки уведомлений.
}
Logger.log("Произведена замена точек на слэши в датах заезда и выезда всех существующих бронирований.");
}

但我仍然得到以下错误:

TypeError: Cannot find function replace in object Sun May 01 2016 00:00:00 GMT+0300 (MSK). (line 16, file ...


UPD № 2。我把来源放在下面,我终于想出了:

function FormatCheckInAndCheckOutDates() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetName = "2016"; // Здесь указывается название листа таблицы, в котором требуется производить форматирование дат заезда и выезда.
var sheet = ss.getSheetByName(sheetName);
var startRow = 2; // Строка с первым бронированием для начала обработки.
var numRows = sheet.getLastRow()-1; // Количество строк с бронированиями для обработки.
var dataRange = sheet.getRange(startRow, 1, numRows, 3); // Охват столбцов для обработки ячеек, в данном случае с 1-го по 3-й.
var data = dataRange.getValues(); // Получить значение ячеек в каждой ячейке каждой строке в рамках столбцов, охваченных верхним кодом.
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var checkInDate = row[0];
var checkOutDate = row[1];
if (typeof checkInDate == "object") { // Здесь обрабатываем даты заезда.
var formattedCheckInDate = Utilities.formatDate(checkInDate, "GMT+0300", "dd/MM/yyyy");
} else {
var formattedCheckInDate = checkInDate.toString().valueOf().replace(/\./g, "/");
Logger.log("В дате заезда в строке № " + [i+2] + " разделяющие точки были заменены на слэши.");
}
if (typeof checkOutDate == "object") { // Здесь обрабатываем даты выезда.
var formattedCheckOutDate = Utilities.formatDate(checkOutDate, "GMT+0300", "dd/MM/yyyy");
} else {
var formattedCheckOutDate = checkOutDate.toString().valueOf().replace(/\./g, "/");
Logger.log("В дате выезда в строке № " + [i+2] + " разделяющие точки были заменены на слэши.");
}
sheet.getRange(startRow + i, 1).setValue(formattedCheckInDate); // Обновляем столбец значениями обработанных дат заезда.
sheet.getRange(startRow + i, 2).setValue(formattedCheckOutDate); // Обновляем столбец значениями обработанных дат выезда.
SpreadsheetApp.flush();
}
}

感谢您为解决此问题所做的所有贡献!

最佳答案

Google Apps 脚本有一个用于此目的的内置函数:

Utilities.formatDate(日期,时区,格式)

例如:Utilities.formatDate(row[0],"EST", "MM/dd/yyyy")

关于javascript - 通过将点替换为斜线来格式化日期的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38225879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com