Javascript 日期时间计算问题

Javascript 日期时间计算问题,javascript,jquery,momentjs,Javascript,Jquery,Momentjs,我正在尝试根据抽奖时间创建一个倒计时 如果当前日期时间大于当前星期三,则显示当前星期六的日期时间 如果当前日期时间大于当前星期六,则显示下一个星期三的日期时间 我不想让它在那天的最后一个小时显示出来 我使用的是时刻和时刻时区 var current = new Date(moment().tz('America/New_York').format('YYYY-MM-DDTHH:mm:ss')); var wednesday = new Date().wednesday(); //if we ar

我正在尝试根据抽奖时间创建一个倒计时

如果当前日期时间大于当前星期三,则显示当前星期六的日期时间

如果当前日期时间大于当前星期六,则显示下一个星期三的日期时间

我不想让它在那天的最后一个小时显示出来

我使用的是时刻和时刻时区

var current = new Date(moment().tz('America/New_York').format('YYYY-MM-DDTHH:mm:ss'));
var wednesday = new Date().wednesday(); //if we are past the current Wednesday, it returns next weeks Wednesday
var wednesdayLimit = new Date(wednesday.getFullYear(), wednesday.getMonth(), wednesday.getDate(), 22, 59, 00);
var saturday = new Date().saturday();
var saturdayLimit = new Date(saturday.getFullYear(), saturday.getMonth(), saturday.getDate(), 22, 59, 00);

if (current > wednesdayLimit && current < saturdayLimit)
{
    var temp = moment(saturdayLimit).format('YYYY-MM-DD HH:mm');
    $('.countdown').data('date', temp);
    $(".countdown").TimeCircles();
}
else if (current > saturdayLimit && current < wenesdayLimit)
{
    var temp = moment(wednesdayLimit).format('YYYY-MM-DD HH:mm');
    $('.countdown').data('date', temp);
    $(".countdown").TimeCircles();
}
var current=新日期(矩().tz('America/new_York')。格式('YYYY-MM-DDTHH:MM:ss');
var周三=新日期().周三()//如果我们已经过了当前的星期三,它将在下周的星期三返回
var wednesdayLimit=新日期(星期三.getFullYear(),星期三.getMonth(),星期三.getDate(),22,59,00);
var saturday=新日期().saturday();
var saturdayLimit=新日期(saturday.getFullYear(),saturday.getMonth(),saturday.getDate(),22,59,00);
如果(当前>星期三限制和当前<星期六限制)
{
var temp=力矩(星期六限制)。格式('YYYY-MM-DD HH:MM');
$('.countdown').data('date',temp);
$(“.countdown”).TimeCircles();
}
否则如果(当前>星期六限制和当前<星期六限制)
{
var temp=力矩(星期三限制)。格式('YYYY-MM-DD HH:MM');
$('.countdown').data('date',temp);
$(“.countdown”).TimeCircles();
}
也许我把事情复杂化了

更新

对不起,让我试着澄清一下。在星期三或星期六的22:59:01-23:59:59之间不应显示倒计时。一天的最后1小时1分钟。这就是我创建*Limit变量并将其调整为22:59:00的原因

因此,要显示星期三限制,当前日期时间需要介于
周四00:00:00和周六22:59:00

现在要显示saturdayLimit,当前日期时间需要介于
周日00:00:00和周三22:59:00

更新2


目前正在工作,但可能是一种更干净/更好的方式吗?

我想你只需要检查一下哪一天离今天很近?今天是星期三还是星期六?换句话说,检查周六是否大于周三,反之亦然。(或找出两者中最小的一个)

这里是最新的小提琴:

更新:添加了检查当前日期是否为星期三/星期六的逻辑

更新2:我检查了您更新的小提琴,发现您正在使用momentjs和datejs。你真的需要两个图书馆吗?我会坚持下去

查看
current
的不同值以及您在小提琴v11中提到的预期结果,我已经更新了我的代码@

//var current=moment('2016/01/17 08:00:00','YYYY/MM/DD HH:MM:ss')//显示星期三
//var电流=力矩(“2016/01/20 00:00:00”,“YYYY/MM/DD HH:MM:ss”)//显示星期三
//var电流=力矩('2016/01/20 22:59:00','YYYY/MM/DD HH:MM:ss')//最后一小时
//var电流=力矩('2016/01/20 23:59:59','YYYY/MM/DD HH:MM:ss')//最后一小时
//var电流=力矩(“2016/01/21 00:00:00”,“YYYY/MM/DD HH:MM:ss”)//显示卫星
//var电流=力矩(“2016/01/23 00:00:00”,“YYYY/MM/DD HH:MM:ss”)//显示卫星
var电流=力矩('2016/01/23 22:59:01','YYYY/MM/DD HH:MM:ss')//上个小时的展览
var周三=当前时刻。第(3)天;//太阳=0。。。sat=6
var周六=当前时刻。第6天;
var currentWeekday=current.weekday();
var wednesdayWeekday=星期三.weekday();
//var saturdayWeekday=时刻(星期六).weekday();

var show周三=currentWeekday
else如果(current>saturdayLimit&¤t>saturdayLimit)
相同的条件出现两次?很抱歉更新了那一行。您应该对此进行修改。目前你得到了什么价值观?工作中的提琴已经过时了,希望我能更好地澄清一下。我已经更新了提琴。我让它工作,但也许你知道一个更干净的方法/更好的方法?它在$('.Current')内显示“Current:Invalid Date”。这是我正在查看的正确版本吗?事实上,我看到这在Chrome中是正确的,但是IE 11,FireFox显示无效。显然,修复了我必须使用
/
而不是
-
来跨浏览器工作。
var current = new Date(moment().tz('America/New_York').format('YYYY-MM-DDTHH:mm:ss'));
var wednesday = new Date().wednesday();
var saturday = new Date().saturday();

$('.current').html(current);
$('.wednesday').html(wednesday);
$('.saturday').html(saturday);

var currentWeekday = moment(current).weekday();
var wednesdayWeekday = moment(wednesday).weekday();
var saturdayWeekday = moment(saturday).weekday();
var temp = (currentWeekday == wednesdayWeekday || currentWeekday == saturdayWeekday)? current :  Math.min(wednesday, saturday);

$('.countdown').html(moment(temp).fromNow()); // use appropriate time of temp date
//var current = moment('2016/01/17 08:00:00', 'YYYY/MM/DD HH:mm:ss'); //display Wed
//var current = moment('2016/01/20 00:00:00', 'YYYY/MM/DD HH:mm:ss'); //display Wed
//var current = moment('2016/01/20 22:59:00', 'YYYY/MM/DD HH:mm:ss'); //display Wed last hour
//var current = moment('2016/01/20 23:59:59', 'YYYY/MM/DD HH:mm:ss'); //display Wed last hour
//var current = moment('2016/01/21 00:00:00', 'YYYY/MM/DD HH:mm:ss'); //display Sat
//var current = moment('2016/01/23 00:00:00', 'YYYY/MM/DD HH:mm:ss'); //display Sat
var current = moment('2016/01/23 22:59:01', 'YYYY/MM/DD HH:mm:ss'); //display Sat last hour

var wednesday = moment(current).day(3); // sun=0 ... sat=6
var saturday = moment(current).day(6);

var currentWeekday = current.weekday();
var wednesdayWeekday = wednesday.weekday();
//var saturdayWeekday = moment(saturday).weekday();
var showWednesday = currentWeekday <= wednesdayWeekday;
var temp = showWednesday? wednesday : saturday;

temp = temp.hours(23).minutes(59).seconds(59).milliseconds(999);

$('.current').html(current.toDate());
$('.wednesday').html(wednesday.toDate());
$('.saturday').html(saturday.toDate());

$('.countdown').html((showWednesday? "Wed" : "Sat") +
  (temp.diff(current, "minutes") <= 60 ? " last hour" : ""));