无效日期 - JavaScript GMT 时间

Posted

技术标签:

【中文标题】无效日期 - JavaScript GMT 时间【英文标题】:Invalid Date - JavaScript GMT time 【发布时间】:2020-04-29 18:33:09 【问题描述】:

我尝试仅在特定时间在我的网站上运行弹出窗口。所以我编写了这段代码,但在控制台“无效日期”中出现错误。我需要将弹出窗口设置为伦敦时间。有什么问题?

jQuery(document).ready(function($)

var date = new Date().toLocaleString("en-GB", timeZone: "Europe/London");
date = new Date(date);

var curHr = date.getHours();
var minutes = 1;

if ((curHr > 16 && curHr < 24) || (curHr > 0 && curHr < 8)) 
    date.setTime(date.getTime() + (minutes * 60 * 1000));

    var active = Cookies.get('active');
    if (active == 'yes') 
      return false; // cookie active do nothing
     else  //trigger popup and set a cookie
      setTimeout(function() 
        $(".fancybox").eq(0).trigger('click');
      , 500);
      $(".fancybox")
        .attr('rel', 'group')
        .fancybox(
          padding: 0,
          width: 530,
          height: 550,
          scrolling: 'auto'
        );
    
    Cookies.set('active', 'yes', 
      expires: 1 / 1440 // set to 1 minute.
    );

console.log(date);
);

【问题讨论】:

删除日期 = 新日期(日期); 这会返回错误:“Uncaught TypeError: date.getHours is not a function” 【参考方案1】:
var date = new Date().toLocaleString("en-GB", timeZone: "Europe/London");
date = new Date(date); // Invalid Date since date is like  "13/01/2020, 02:36:57"

新日期将采用YYYY-MM-DDYYYY-MM-DDTHH:MM:SSZ 格式的字符串(ISO 中的示例格式)

尝试更改字符串格式并尝试。

var date = new Date().toLocaleString("en-GB", timeZone: "Europe/London");
date = new Date(date); // Not working

var date = new Date().toLocaleString("en-US", timeZone: "Europe/London");
date = new Date(date); // Working

var date = new Date().toLocaleString("en-UK", timeZone: "Europe/London");
date = new Date(date); // Working

【讨论】:

嗯,我不明白。如果我将时区更改为: new Date().toLocaleString("en-US", timeZone: "America/New_York");一切正常。伦敦不工作。

以上是关于无效日期 - JavaScript GMT 时间的主要内容,如果未能解决你的问题,请参考以下文章

使用偏移量计算 JavaScript 日期时间

在javascript中将日期从“Thu Jun 09 2011 00:00:00 GMT+0530(印度标准时间)”转换为“YYYY-MM-DD”

使用 jquery/javascript 更改日期时间格式

如何在 C# 中拒绝来自客户端的非 UTC/GMT 日期?

javascript中的日期时间戳转换

如何使用JavaScript获取当前日期高达毫秒?