我有两张表,都有保存到列中的日期。我的当前日期以相同代码保存在Sheet1和Sheet2上:
curDate = Utilities.formatDate(new Date(), "EST", "MM/dd/yyyy");
我想让我的一个脚本比较从Sheet1到Sheet2的日期
在Sheet1上,我使用一个小脚本设置当前日期,然后使用拖动功能设置列中的上一个和下一个日期,格式与此处相同:
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Update Dates')
.addItem('Set Dates', 'setDatesUp')
.addToUi();
}
function setDatesUp(){
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName("Sheet1");
var curDate = Utilities.formatDate(new Date(), "EST", "MM/dd/yyyy");
sheet1.getRange("A4").setValue(curDate);
}
设置Sheet1上的日期后,我使用以下脚本比较Sheet1和Sheet2中的日期,此脚本还设置Sheet2的日期,因为当激活此脚本时,它应该在相应的框中标记当前日期。
function onEdit() {
//Loops through all of Column C to determine which values are True and False
//Saves all True Values Row # in SavedValues
//Initialize Variables
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();
var sheet2 = ss.getSheetByName("Sheet2");
//Sheet 2 S2
var cValuesS2 = sheet2.getRange("C:C").getValues();
var dValuesS2 = sheet2.getRange("D:D").getValues();
var lastRowS2 = sheet2.getLastRow();
//Variables
var curDate;
var curVar;
//Loops through all S2 rows, stops at last row
for (var i = 0; i <= lastRowS2; i++){
//Checks checkboxes in S2C:C for True OR "Complete" and adds dates in corresponding D:D cells
if (cValuesS2[i] == "true" || cValuesS2[i] == "Complete") {
//If D:i is empty
if (dValuesS2[i] == "") {
//Sets current date
curDate = Utilities.formatDate(new Date(), "EST", "MM/dd/yyyy");
//Set current D:i cell (*+1 offset)
curVar = ("D" + (i + 1));
//Sets curVar value to curDate
sheet2.getRange(curVar).setValue(curDate);
}
//Checks checkboxes in S2C:C for False OR "Incomplete" and deletes dates in corresponding D:D cells
} else if (cValuesS2[i] == "false" || cValuesS2[i] == "Incomplete") {
//If D:i is NOT empty
if (dValuesS2[i] != "") {
//Set current D:i cell (*+1 offset)
curVar = ("D" + (i + 1));
//Sets curVar to ""
sheet2.getRange(curVar).setValue("");
}
}
}
updateS1();
}
最后我有了我的脚本来比较两张纸上的日期。
function updateS1() {
//Initialize Variables
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();
var sheet1 = ss.getSheetByName("Sheet1");
var sheet2 = ss.getSheetByName("Sheet2");
//Sheet 1 S1
var aValuesS1 = sheet1.getRange("A:A").getValues();
var lastRowS1 = sheet1.getLastRow();
//Sheet 2 S2
var dValuesS2 = sheet2.getRange("D:D").getValues();
var lastRowS2 = sheet2.getLastRow();
//Variables
var curVar;
var curVar2;
//Loop through Sheet 1 until the bottom
//For each value in S1 A I use i
for (var i = 0; i <= lastRowS1; i++) {
//Loop through Sheet 2 until the bottom
//For each value in S2 D I use j
for (var j = 0; j <= lastRowS2; j++) {
//TODO: Compare dates from S1 A:i to S2 D:j
//If they are the same date the if statement will execute
}
}
}
我已经尝试过使用以下方法
if (aValuesS1[i].toString() == dValuesS2[j].toString()) {
}
和
if (aValuesS1[i] == dValuesS2[j]) {
}
但这两种选择都没有奏效。我注意到,当我在记录器中获取日期的“值”时,我得到了很多我不想要或不需要的信息:
2018年10月30日星期四00:00:00 GMT-0400(美国东部时间)
而不是18年8月30日
我认为这就是为什么即使两个框显示的日期格式相同,我也无法获得“匹配”值的原因。老实说,我对如何解决这个问题感到困惑,所以任何帮助都将不胜感激。
所以事实证明,我实际上可以在if语句中与. toString()进行比较,我的循环在Google Apps脚本中执行需要相当长的时间。
以下是场景: 我有一个日期和一个不同的日期格式。示例: 日期:2016-10-19 日期格式:“DD-MM-YYYY”。 我需要检查这个日期是否有效。 我尝试过跟踪事情 d.isValid()每次返回false。Moment.js解析给定格式的日期吗? 然后我尝试先在中格式化日期,然后将其传递给矩。js: 现在<代码>日期。isValid()给了我想要的结果,但现在是时候了。js日期对象创建两次。
我的Java外汇应用程序处理工作时间。我在两个日期字段中有工作开始和结束时间。我成功地计算了两个日期之间的差异时间;但是现在我如何检查结果是在晚上还是白天的范围内???一天从6点开始,到22点结束。例如,有人在凌晨3点到晚上11点之间工作。下面是我如何计算总工作小时数的。 我们有可以工作到晚上10点以上的工人,工资也不一样。如果他们在晚上10点以后工作,他们将获得特殊报酬。我们在工作结束时付款。他
问题内容: 该函数似乎只返回false。你们有没有一样?我敢肯定,我正在忽略一些东西,但是,新鲜的眼睛和所有这些… 我使用以下命令调用该函数: 问题答案: 如果您的PHP> = 5.1: 除此以外:
我正在从Wordpress字段中获取日期,我需要检查这些日期是否已经过去或即将到来。 foreach呼应了这一点。 看起来只是检查第一天的约会。
我想能够验证输入日期小时是否已经在谷歌日历中创建。 这是我得到的代码,但我现在被卡住了(谷歌快速入门教程)。这段代码给出了10个即将到来的事件。 但我希望能够输入一个日期,然后在添加之前验证事件是否已经存在。 编辑: 我尝试了这个代码,但是我得到了一个错误。 获取时出错:
问题内容: 我想通过将NSDate与当前日期进行比较来检查NSDate是否在之前(过去)。我该怎么做? 谢谢 问题答案: 我找到了方法。 您也有方法。 迅速3到迅速5: