Gelecekte belirli bir noktaya bir geri sayım sayacı uygulamak için çalışıyorum. Zaman içinde bu nokta, her zaman haftanın ve saatin aynı günüdür ve UTC zamanına dayanır.javascript
Haftanın bir günü ve bir saati verilen genel bir işlev yazmayı deniyorum, ileride bu ölçütleri temsil eden bir tarih nesnesi döndürecektir.
Örnekler:
getNextOccuranceOfUTCDayAndHour(1, 7);
Pazartesi günü sabah 7 sonraki örneğini alın. Bugün pazartesi, 5/25/2015 @ geceyarısı UTC ise, bu işlev 6/1/2015 Pazartesi saat 7 UTC'yi temsil eden bir Tarih nesnesi döndürmelidir.
getNextOccuranceOfUTCDayAndHour(3, 13);
Bunu yapmak için bir işlev yazmayı denedim ve aşağıdaki pasajı ekledim, ancak yalnızca bazı tarihler için değil, başkaları için çalışıyor gibi görünüyor. İnanılmaz derecede güvenilmez. Moment.js'yi kullanmamayı tercih ederim.
function getNextOccuranceOfUTCDayAndHour(day, hour) {
d = new Date();
d.setDate(d.getUTCDate() + (7 + day - d.getUTCDay()) % 7)
d.setUTCHours(hour, 0, 0, 0);
return d;
}
function format_seconds(t) {
var d = Math.floor(t/86400);
var h = Math.floor(t % 86400/3600);
var m = Math.floor(t % 3600/60);
var s = Math.floor(t % 3600 % 60);
return ((d > 0 ? d + " d. " : "") +
(h > 0 ? h + " h. " : "") +
(m > 0 ? m + " m. " : "") +
s + " s.");
}
function update() {
var next_occurance = getNextOccuranceOfUTCDayAndHour(1, 7);
$('#next_occurance').text(next_occurance);
var ms = next_occurance - new Date();
$('#countdown').text(format_seconds(Math.floor(ms/1000)));
}
$(function() {
update();
setInterval(update, 1000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="next_occurance">Next Occurance</p>
<p id="countdown">Countdown</p>
Düzenleme: beklenen vs. ait bazı örnekler değerleri döndü. JSFiddle
birkaç işi tarihleri örneklerini yaramayanlara olanları içerir Could:
JSFiddle Güncelleme? – Xufox
Elbette, işte gidiyorsunuz: https://jsfiddle.net/2j49q0ak/ –
İkinci örnek, geri dönüşün sonunda '.toUTCString()' ile bile benim için Pazartesi'yi döndürür (saat dilimim UTC + 02: 00)… d'. – Xufox