首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用程序脚本条件来检查输入的日期是否在今天日期之前

应用程序脚本条件来检查输入的日期是否在今天日期之前
EN

Stack Overflow用户
提问于 2021-06-25 22:33:56
回答 2查看 651关注 0票数 0
代码语言:javascript
复制
var date = Utilities.formatDate(new Date(), "GMT-8", "m/dd/yyyy")
if (formS.getRange("B7").getValue() != " " && formS.getRange("B7").getValue() != date) 
 { 
  SpreadsheetApp.getUi().alert("Please Enter A Valid Date"); 
  return
 }

尝试在上述条件下检查单元格是否为空,并且该单元格不包含“今日日期”之前的日期

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-26 01:09:32

代码语言:javascript
复制
function myfunk() {
  const ss = SpreadsheetApp.getActive();
  const formS = ss.getSheetByName('formS');
  const dtv = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()).valueOf();
  if (!formS.getRange("B7").isBlank() && new Date(formS.getRange("B7").getValue()).valueOf() < dtv) {
    SpreadsheetApp.getUi().alert("Please Enter A Valid Date");
    return;
  }
}
票数 1
EN

Stack Overflow用户

发布于 2021-06-28 09:37:53

在Apps脚本中检查日期

通常,您可以像在普通JavaScript代码中一样使用Date对象。如果您的脚本需要对时区敏感,那么只需要记住一件主要的事情。

时区在清单中定义:

这不能动态更改。因此,如果您需要对它们敏感,那么您需要管理代码中的偏移量。

你的剧本

这一行:

代码语言:javascript
复制
var date = Utilities.formatDate(new Date(), "GMT-8", "m/dd/yyyy")

返回一个字符串。不是日期对象,因此不能将其与其他日期对象进行比较,例如,如果工作表值被格式化为日期,则从工作表值返回的内容。

您可以使用Regex或split获取年份和月份,并以这种方式进行比较,但是在1月1日使用脚本时可能会遇到问题。这是因为,简单地将31/12/2021和01/01/2022的年份、月份和日期进行比较,您的条件语句就会有点棘手。有可能,但可能有点难读。

初始化到午夜

下面是以一种相对简单的方式进行比较的一种方法。

将日期对象初始化为当前的00:00:00似乎很方便。然后,您可以使用Unix时间快速比较数据。

代码语言:javascript
复制
var now = new Date()
now.setHours(0)
now.setMinutes(0)
now.setSeconds(0)
now.setMilliseconds(0)

您还可以以更简洁的方式这样做:

代码语言:javascript
复制
var now = new Date()
now.setHours(0,0,0,0);

然后,您可以在date对象上使用getTime()方法获取以毫秒为单位的统一时间,并对它们进行比较。

代码语言:javascript
复制
var dateToCheck = formS.getRange("B7").getValue()
  if (
    !(dateToCheck instanceof Date) || // If value is not instance of a Date object
    dateToCheck.getTime() <= now.getTime() // If date is before 00:00:00 today.
  ) {
    SpreadsheetApp.getUi().alert("Please Enter A Valid Date");
    return
  }
}

这似乎是一个简洁的方式来做比较,你正在寻找。

参考文献

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68137667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档