微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript:比较不同GMT偏移量的日期

如何解决Javascript:比较不同GMT偏移量的日期

我有一个日期列表,需要在该列表中找到今天,但时区已关闭。当我使用let d = new Date()时,它将返回GMT-6,但日期列表在GMT-7中。我四处张望,无法找出如何获得2个日期,以使d1 == d2返回true。 这是在Google表格上,因此我知道我可以操纵表格和脚本的时区,但是我想弄清楚这一点,以便无论使用哪种语言环境,脚本都可以运行。

表格https://docs.google.com/spreadsheets/d/1XKrH5AQSIGxJOWOzxT6OaI2ibn2kqeb9etyl5VGZu8M/edit#gid=0

function openToDate(){
  const sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  let data = sh.getRange(1,1,sh.getLastRow()).getValues();
  let d = new Date();
  d.setHours(0,0);
  let d1 = d.toUTCString();
  let d2;
  Logger.log(d);
  Logger.log(d.getTime());
  Logger.log(d1);
  for (let i = 1; i < data.length; i=i+6){
    Logger.log(i);
    d2 = new Date(data[i][0]);
    Logger.log(d2);
    Logger.log(d2.getTime());
  }

解决方法

对于日期相等,您将要使用日期的数值。调用setHours()时,它将返回调整后的日期的数值。如果您遇到时区问题,可以尝试使用setUTCHours()

function openToDate(){
  const sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  const data = sh.getRange(1,1,sh.getLastRow()).getValues();
  const today = (new Date()).setUTCHours(0,0);
  for (let i = 1; i < data.length; i=i+6){
    let d = (new Date(data[i][0])).setUTCHours(0,0);
    if (today == d) {
      Logger.log('MATCH!'); 
    }
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。