2016-04-13 6 views
0
function testEvent(){ 
    var date = new Date(); 
    var start = todayStart(date); 
    var end = tomorrowEnd(date); 
} 

function todayStart(date123){ 
    var dateHolder = date123; 
    dateHolder.setHours(15, 0, 0, 0); 
    return dateHolder; 
} 

function tomorrowEnd(tomorrow){ 
    var dateHolder1 = tomorrow; 
    dateHolder1.setDate(tomorrow.getDate() + 1); 
    dateHolder1.setHours(14, 59, 59, 59); 
    return dateHolder1; 
} 

Ich habe Probleme mit dem obigen Code. Ende und Anfang kehren beide 14: 59: 59: 59 zurück, es sei denn, ich mache das Ende aus, was dann zu 15: 00: 00: 00 führt. Das Ende folgt dem Start, also bin ich mir nicht sicher, was das Problem hier ist. Warum sollte das Ende auskommentiert werden, um das Problem zu beheben (in gewisser Weise), aber es gibt Probleme. Es tut uns leid, wenn das schon einmal gefragt wurde, aber spezifische Hilfe ist immer am einfachsten. Dies ist auch in Google Apps-Skript.Problem mit Einstellung Start-und Enddatum in Javascript

Antwort

0

Sie übergeben das gleiche Date-Objekt sowohl an todayStart als auch an morgenEnd, und beide manipulieren dieses Objekt. Seit morgen ist End das Letzte, was man nennt, das ist das Ergebnis, das man sieht.

+0

Haben Sie zufällig eine Empfehlung haben? Soll ich das date-Objekt in eine placeHolder-Variable kopieren? – Logan

0

Objekte werden in JavaScript als Referenz übergeben. Sie benötigen hier zwei separate Objekte. Try this:

function testEvent(){ 
    var startdate = new Date(); 
    var enddate = new Date(); 
    var start = todayStart(startdate); 
    var end = tomorrowEnd(enddate); 
} 
0

unten eine funktionierende Version des Codes ist, wie in den anderen Antworten erwähnen Sie separate Datumsobjekte erstellen müssen;

function testEvent(){ 
    var date = new Date(); 
    var start = todayStart(date); 
    var end = tomorrowEnd(date); 
    Logger.log('start = '+start+' end = '+end); 
} 

function todayStart(date123){ 
    var dateHolder = new Date(date123); 
    dateHolder.setHours(15, 0, 0, 0); 
    return dateHolder; 
} 

function tomorrowEnd(tomorrow){ 
    var dateHolder1 = new Date(tomorrow); 
    dateHolder1.setDate(tomorrow.getDate() + 1); 
    dateHolder1.setHours(14, 59, 59, 59); 
    return dateHolder1; 
} 

Ergebnis:

enter image description here