繁体   English   中英

Date对象未在Google脚本中捕获比较(javascript)

[英]Date object not catching comparisons in google scripts (javascript)

我有一个脚本,可以相互比较两个日期。 但是两者的进入方式有所不同。 我将其转换为Mo / day / year的字符串格式,然后转换为日期格式。 另一个则直接用于日期格式的Google电子表格单元格。 但是,当我对它们进行比较时,即使日期落在比较范围内,它也不起作用。 这是我的代码:

 function formatDate(someDate){
  var x = someDate.split("T");
  var v = x[0].split("-");
  var newDate = new Date();
  newDate.setFullYear(v[0],(v[1]-1),v[2]);
  //var newDate = v[1]+"/"+ v[2]+"/"+v[0];

  return newDate;
  }

 //calling formatDate within another function
 if(startDate != ''){
    if(singleCard[j].date != undefined){
      var k = singleCard[j].date;
      var f = formatDate(k);
      var dt = new Date(f);

 if(dt >= startDate && dt <= endDate){  //date comparison
   //do something here
 }

开始/结束日期采用以下格式:

    Fri Oct 12 2012 00:00:00 GMT-0700 (PDT)

singleCard [j] .date将作为字符串输入:

    "2012-10-12T16:57:51.517Z"

然后我用:

   var f = formatDate(date) -> var dt = new Date(f)

处理它。
我不确定我在做什么错。 谢谢。

当你做

var newDate = v[1]+"/"+ v[2]+"/"+v[0];

您确定您使用的年/月/日顺序正确吗?

您是否尝试记录var dt = new Date(f); 看到它的值作为日期对象?

对不起,如果我的问题似乎是显而易见的,但因为我不知道日期本地设置我不能确定你如何处理这个问题。(我在这里我们使用DD / MM / YYYY所以我已经习惯了一个国家有问题;)

编辑 :刚看到您的评论...不应该是v[0]+"/"+ v[1]+"/"+v[2] (yyyy / mm / dd)

编辑2 :我认为您在使用setFullYear()时也必须给hh mm ss参数;

就像是

 newDate.setFullYear(v[0],(v[1]-1),v[2],0,0,0,0);

为了使它工作。 这也是必要的(我甚至会说强制)设置HH毫米ss和毫秒到0,因为你使用的是<=>=比较,如果你让小时,分钟,秒和毫秒自由平等可能永远不会是真实的过自己的生活。

不要忘记日期对象总是带有时间的完整日期,即使您不显示/使用它们也是如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM