Saya baru saja membuat kode berikut dan mengalami beberapa masalah dengannya. Ide keseluruhan dari proyek ini adalah untuk dapat menentukan berapa banyak waktu yang tersisa dalam periode sekolah atau sampai periode dimulai. Saya pertama kali menyimpan waktu pengguna sebagai variabel dan mengisolasi jam dan menit saat ini menggunakan sub string. Berikut adalah kode untuk itu.

//Get current date.
var now = new Date();
//Make the date only hours and minutes But the issue is there is a semicolon (:) in between them.
var myTime = now.toString().substr(16,5)

Masalahnya adalah saya ditinggalkan dengan titik koma yang mencegah semua ini berfungsi.

Setelah saya mendapatkan jam dan menit yang diisolasi dan disimpan sebagai variabel, saya perlu memberi tahu apakah waktu pengguna dalam hari sekolah. Saya melakukannya dengan membuat pernyataan if bersyarat yang saya tidak yakin berhasil dilakukan.

if (myTime > startday || myTime < endday) {

Di sini saya HANYA ingin pernyataan berfungsi jika waktu pengguna saat ini, juga dikenal sebagai myTime LEBIH BESAR daripada hari mulai dan KURANG dari hari akhir. Hal ini karena startday disimpan sebagai awal hari sekolah saya dan endday disimpan sebagai waktu berakhirnya hari sekolah saya. Jika pengguna waktu dosent memenuhi persyaratan ini kemudian pergi ke pernyataan lain yang mengatakan sekolah belum dimulai.

Ini sisa kodenya jika Anda ingin melihat dan memberi saran.

//Get current date.
var now = new Date();
//Make the date only hours and minutes But the issue is there is a semicolen (:) in between them.
var myTime = now.toString().substr(16,5)
//For Testing Purposes.
console.log(myTime);

//All the periods throught my school day.
var startday = 0745;
var period1end = 0834;
var period1transition = 0838;
var period2end = 0930;
var period2transition = 0934;
var period3end = 1023;
var period3transition = 1027;
var period4end = 1116;
var period4transition = 1120;
var period5end = 1238;
var period5transition = 1242;
var period6end = 1331;
var period6transition = 1335;
var period7end = 1425;
var endday = 1425;

//The big boy, I will tell you my thought proccess as I go
function myFunction() {
//Here I ONLY want the statement to work if the users current time, also known as myTime is GREATER than startday and less than endday. This is because startday is stored as the start of my school day and endday is the end of the day. If the users current time dosent meet this requirement it then goes to the else statement which says school hasnt started yet.
    if (myTime > startday || myTime < endday) {
        console.log("Test");
//The purpose of this statement is the following. If the users time is LESS than the time period 1 ends it will then subtract period1's time from the users current time.
    } else if (myTime < period1end) {
        var timeleft = (period1end-myTime);
        console.log("There is" + timeleft + "mintues left in the period." );
//The purpose of this statement is if the users time is in between a period, also known as period1transition, it says the amount of time until the next period starts.
    } else if (myTime < period1transition) {
        var timeleft = (period1transition-myTime);
        console.log("There is" + timeleft + "mintues left until the next period starts." );
    } else if (myTime < period2end) {
        var timeleft = (period2end-myTime);
        console.log("There is" + timeleft + "mintues left in the period." );
    } else if (myTime < period2transition) {
        var timeleft = (period2transition-myTime);
        console.log("There is" + timeleft + "mintues left until the next period starts." );
    } else if (myTime < period3end) {
        var timeleft = (period3end-myTime);
        console.log("There is" + timeleft + "mintues left in the period." );
    } else if (myTime < period3transition) {
        var timeleft = (period3transition-myTime);
        console.log("There is" + timeleft + "mintues left until the next period starts." );
    } else if (myTime < period4end) {
        var timeleft = (period4end-myTime);
        console.log("There is" + timeleft + "mintues left in the period." );
    } else if (myTime < period4transition) {
        var timeleft = (period4transition-myTime);
        console.log("There is" + timeleft + "mintues left until the next period starts." );
    } else if (myTime < period5end) {
        var timeleft = (period5end-myTime);
        console.log("There is" + timeleft + "mintues left in the period." );
    } else if (myTime < period5transition) {
        var timeleft = (period5transition-myTime);
        console.log("There is" + timeleft + "mintues left until the next period starts." );
    } else if (myTime < period6end) {
        var timeleft = (period6end-myTime);
        console.log("There is" + timeleft + "mintues left in the period." );
    } else if (myTime < period6transition) {
        var timeleft = (period6transition-myTime);
        console.log("There is" + timeleft + "mintues left until the next period starts." );
    } else if (myTime < period7end) {
        var timeleft = (period7end-myTime);
        console.log("There is" + timeleft + "mintues left in the period." );
    } else if (myTime < period7transition) {
        var timeleft = (period7transition-myTime);
        console.log("There is" + timeleft + "mintues left until the next period starts." );
    } else {
//If the users time is not greater than the startday and less than the endday it simply says the following.
        console.log("School Has Not Started Yet");
    }
  //forget about this.
// document.getElementById("demo").innerHTML = myTime;
}

Terima kasih

Zach

1
user7341801 28 Desember 2016, 02:55

1 menjawab

Jawaban Terbaik

Anda harus bekerja dengan menit saja alih-alih kombinasi jam-menit, karena yang terakhir jauh lebih sulit untuk dihitung.

Juga, kode Anda akan memiliki lebih sedikit pengulangan jika Anda menggunakan array untuk menyimpan periode yang berbeda.

Berikut adalah bagaimana Anda bisa melakukannya:

//Get current date & midnight
var now = new Date();
var midnight = new Date();
midnight.setHours(0,0,0,0);
//Get number of minutes that passed since midnight:
var myTime = Math.floor((now.getTime() - midnight.getTime()) / 60000);
//For Testing Purposes.
console.log(myTime + ' minutes passed since midnight.');

function minutes(hour, min) {
    return hour * 60 + min;
}

//All the periods throughout my school day.
var periods = [
    { start: minutes( 7, 45), end: minutes( 8, 34) },
    { start: minutes( 8, 38), end: minutes( 9, 30) },
    { start: minutes( 9, 34), end: minutes(10, 23) },
    { start: minutes(10, 27), end: minutes(11, 16) },
    { start: minutes(11, 20), end: minutes(12, 38) },
    { start: minutes(12, 42), end: minutes(13, 31) },
    { start: minutes(13, 35), end: minutes(14, 25) },
];

function myFunction(myTime, periods) {
    periods.every(function (period, i) {
        if (myTime < period.start) {
            if (i == 0) {
                console.log('School has not started yet');
            } else {
                var timeLeft = period.start - myTime;
                console.log("There are " + timeLeft + 
                            " minutes left until period " + (i+1) + " starts.");
            }
        } else if (myTime < period.end) {
            var timeLeft = period.end - myTime;
            console.log("There are " + timeLeft + 
                        " minutes left until period " + (i+1) + " is over.");
        } else if (i == periods.length - 1) {
            console.log('School has finished for today');
        } else {
            return true; // keep looking for the right period
        }
    });
}

myFunction(myTime, periods);
0
trincot 28 Desember 2016, 00:35