Ближайшая пятница, со временем

Я использую Date API под названием date.js, и я хочу использовать его для получения ближайшей пятницы Date.today().next().friday();, Это работает и так далее, но я хотел указать время, которое я буду менять в следующую пятницу, а не текущее, поэтому я сделал это Date.today().next().friday().set({hour: 19});, Но это не сработало. Кто-нибудь знает, как я могу сделать это с помощью этого API или обычного JS или любого другого API.

осветление

Проясняю, у меня есть обратный отсчет, я хочу, чтобы он отсчитывал до ближайшей пятницы в 19:00, но я не могу получить часть со временем, она просто игнорирует время, в пятницу она просто ищет сеть Пятница и игнорирует, что часы еще не остановили 19:00.

КОД:

var d = new Date();
var dagnr = d.getDay();
var time = d.getHours();

var nextf = Date.today().next().tuesday().set({hour: 19});
var countDownDate = new Date(nextf);

//Random mening för Savar NEJ


// Romdom Mening för Svar JA
var jalist = [
      "Själklart är det de"
    , "Vad fasen skulle det annars vara?"
    , "A fram med chipsen för fan!"
    , "A men det är det ju!"
    , "Ajemän fram netflix"
    , 
];
var jarand = Math.floor(Math.random() * jalist.length);


// Update the count down every 1 second
var x = setInterval(function() {

    // Get todays date and time
    var now = new Date().getTime();
    console.log(countDownDate);
    // Find the distance between now an the count down date
    var distance = countDownDate - now;
    // Time calculations for days, hours, minutes and seconds
    var days = Math.floor(distance / (1000 * 60 * 60 * 24));
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);

    // Testa vilken dag och vilken tid det är
    console.log(dagnr)
    if ((dagnr === 1 && time >= 15) || (dagnr === 6 | dagnr === 0)) {
        document.getElementById("demo").innerHTML = jalist[jarand];
    } else{
        document.getElementById("demo").innerHTML = "Nej tyvärr är det " + days + "d " + hours + "h " + minutes + "m " + seconds + "s " + "kvar";
    }

}, 1000);

1 ответ

Решение

Вы можете проверить, является ли сегодня конкретный день, используя Date.today().is().tuesday(), Просто используйте это с троичным оператором, и все должно работать нормально.

var d = new Date();
var dagnr = d.getDay();
var time = d.getHours();

var nextf =
  Date.today().is().tuesday() ?
  Date.today().set({hour: 19}) :
  Date.next().tuesday().set({hour: 19});

var countDownDate = new Date(nextf);

//Random mening för Savar NEJ


// Romdom Mening för Svar JA
var jalist = [
      "Själklart är det de"
    , "Vad fasen skulle det annars vara?"
    , "A fram med chipsen för fan!"
    , "A men det är det ju!"
    , "Ajemän fram netflix"
    , 
];
var jarand = Math.floor(Math.random() * jalist.length);


// Update the count down every 1 second
var x = setInterval(function() {

    // Get todays date and time
    var now = new Date().getTime();
    // Find the distance between now an the count down date
    var distance = countDownDate - now;
    // Time calculations for days, hours, minutes and seconds
    var days = Math.floor(distance / (1000 * 60 * 60 * 24));
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);

    // Testa vilken dag och vilken tid det är
    if ((dagnr === 1 && time >= 15) || (dagnr === 6 | dagnr === 0)) {
        console.log(jarand);
    } else{
        console.log("Nej tyvärr är det " + days + "d " + hours + "h " + minutes + "m " + seconds + "s " + "kvar");
    }

}, 1000);
<script src="https://cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js"></script>

Другие вопросы по тегам