2016-01-22 97 views
0

我試圖根據彩票繪圖時間創建一個倒計時。DateTime計算問題

如果當前日期時間大於當前星期三,則顯示當前星期六的日期時間。

如果當前日期時間大於當前星期六,則我們顯示下一個星期三日期時間。

我不希望它顯示當天的最後一個小時。

我正在使用瞬間和時刻的時區。

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(); 
} 

也許我過於複雜了。

https://jsfiddle.net/1bLj4m2t/11/

UPDATE

對不起,讓我嘗試澄清。星期三或星期六22:59:01 - 23:59:59之間不應顯示倒計時。最後1小時和1分鐘的一天。這就是爲什麼我創建*限制變量並將其調整爲22:59:00。

所以顯示wednesdayLimit當前日期時間將需要 之間Thursdays 00:00:00 and Saturday 22:59:00

現在顯示saturdayLimit當前日期時間將需要 之間Sunday 00:00:00 and Wednesday 22:59:00

更新2 https://jsfiddle.net/1bLj4m2t/11/

正在工作,但可能是一個清潔/打賭如何做到這一點?

+0

'否則,如果(電流> saturdayLimit &&電流> saturdayLimit)'相同的條件下兩次? –

+0

不好意思更新了那一行。 – Tsukasa

+0

你應該爲此做小提琴。目前你獲得了什麼價值? –

回答

0

我想你只需要檢查一下哪個日期接近今天?是星期三還是星期六?換句話說,檢查星期六是否大於星期三,反之亦然。 (或者找出哪些是兩個及以上)

這裏更新小提琴:https://jsfiddle.net/vnathalye/1bLj4m2t/6/

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 

UPDATE:增加邏輯來檢查,如果當天是星期三/星期六。

UPDATE 2:我檢查過更新後的小提琴,並注意到您正在使用的時刻jj & datejs。你真的需要2個庫嗎?我會堅持momentjs。

綜觀current不同的價值觀和你在你的提琴V11提到我已經更新了我的代碼@https://jsfiddle.net/vnathalye/1bLj4m2t/14/

//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" : "")); 

預期的結果:

  1. .day()函數返回本週的當天(與您正在使用的wednesday()/saturday()不同)。這讓我簡單地比較current平日用的wednesday工作日來決定是否使用wednesdaysaturday進一步計算
  2. 要檢查其臨時的最後一個小時(星期三/星期六),你只需要檢查不同的是< = 60分鐘
  3. 我已經使用了日期字符串,因爲您在示例中使用了日期字符串,因此在調用moment()時使用了第二個參數'YYYY/MM/DD HH:mm:ss'。參考:https://github.com/moment/moment/issues/1407知道使用力矩()
  4. 的推薦方式雖然顯示我用.toDate()的日期,但你可以使用.format()
+0

更新後,希望我能夠澄清它好一點。 – Tsukasa

+0

我更新了小提琴。我得到它的工作,但也許你知道一個更清潔的方式/更好的方式? https://jsfiddle.net/1bLj4m2t/9/ – Tsukasa

+0

它在$('。current')內顯示「Current:Invalid Date」。這是我正在看的正確版本嗎? –