javascript - 使用数组和映射方法将日期添加到日期数组
问题描述
我正在编写一个脚本,在该脚本中我试图使用数组和映射方法将 numdays 添加到谷歌表格中的数组中。
function new_date() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastRow = ss.getMaxRows();
var data = ss.getRange(2, 5, lastRow).getValues();
// Logger.log(data)
var newData = data.map(adding_days);
ss.getRange(2, 5, lastRow).setValues(newData);
}
function adding_days(row){
var millis_per_day = 1000 * 60 * 60 * 24;
var days = 7 ;
var date = new Date(row[0]);
var date2 = Utilities.formatDate(date, "GMT+05:30" , "MM-dd-yyyy");
var numdays = days * millis_per_day
return [ date2 + numdays ];
}
当我运行代码时,它只以另一种格式再次返回数据,我不明白为什么它不能将 numdays 添加到数据中。我是在应用程序脚本中使用数组的新手,所以我对这里出了什么问题感到非常困惑。
提前致谢!
解决方案
将年、月、日、小时、分钟、秒和毫秒添加到日期
在这种特殊情况下,天数:
function new_date() {
const ss=SpreadsheetApp.getActive()
const sh=ss.getActiveSheet();
const v=sh.getRange(2,5,sh.getLastRow()-1,1).getValues();
const ndt=v.map(function(r,i){
let dt=new Date(r[0]);
let days=7;
return [new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()+days,dt.getHours(),dt.getMinutes(),dt.getMilliseconds())];
});
sh.getRange(2,5,ndt.length,ndt[0].length).setValues(ndt);
}
以毫秒为单位添加日期值的问题在于它确实补偿了闰年等特殊情况。虽然这需要很长的一行,但它现在允许您通过简单的整数数学将天数和小时数等直接添加到日期,方法是将其添加到日期构造函数的适当部分。
推荐阅读
- c# - 外部登录不起作用身份服务器4 asp.net核心
- python - Pandas,如果在接下来的 12 个月内满足某个条件,如何检查数据框中的每个日期
- reactjs - 如何切换以显示和隐藏 Reactjs 中的元素?
- jquery - Django中的喜欢按钮
- python - 是否有 python 函数来查找浮点数是否属于特定范围?
- django - 我该如何解决这个错误“类型对象'用户'没有属性'对象'”
- python - 正则表达式 - 计算一个单词在文本中出现的次数
- python - 正则表达式:如何摆脱字符串中的 \n?
- html - 元视口打破责任(使一切变得非常小)
- css - CSS 适用于 chrome 开发工具和实时 CSS 编辑器,但不适用于 wordpress 实时站点