• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[SCRIPTSUCHE] Datumsvergleich

Dieterlm

New member
Hallo,

ich hoffe ihr könnt mir helfen, denn ich habe von JavaScript keine Ahnung. ich habe ein Tool programmiert, welches einmal pro Stunde ein Systemcheck durchführt. Das Tool erzeugt dann eine HTML Seite in welcher die Ergebnisse dargestellt werden. Das Ganze funktioniert soweit auch super.
Was ich allerdings nicht hinbekomme ist, dass die HTML Seite selbst erkennt, wenn der nächste Check nicht zeitgerecht durchgeführt wurde. Es gibt auf der Seite eine Tabelle (siehe unten) welches eine Datum Uhrzeit für Last check und Next check hat. Nun möchte ich feststellen, ob die aktuelle Uhrzeit größer als Next check ist und wenn ja diese Zelle rot darstellen.

Code:
<meta http-equiv="refresh" content=60>
...
<table>
<tr>
<th Style="text-align:center">Last check</th>
<th Style="text-align:center">Next check</th></tr>
<tr>
  <td bgcolor=green Style="text-align:center">28/12/2020 22:15</td>
  <td bgcolor=green Style="text-align:center">28/12/2020 23:15</td></tr>
</table>
...

Ich hoffe ihr könnt mir weiter helfen.

Gruß
Marcus
 
Da du die Seite mittels http-equiv="refresh" und nicht mit AJAX aktualisierst wird dir JS keine große Hilfe sein, denn im Moment des refresh wird alles JS in diesem Dokument angehalten. Also bekommst du einen Ausfall des Backend damit nicht eingefangen.

Das macht nur Sinn, wenn du es mit AJAX aktualisierst.
 
Nein das ist kein AJAX. AJAX ist das hier: https://developer.mozilla.org/en-US/docs/Web/Guide/AJAX/Getting_Started

Oder mit jQuery (was ich empfehle): https://api.jquery.com/jquery.ajax/

Der Grund ist: im Moment wo der Browser http-equiv="refresh" oder document.location ausführt wird JS Ausführung angehalten, das heißt, es gibt dann keinen Code mehr, der etwas rot machen kann. Und es soll ja reagiert werden, wenn das Backend hängt.

Das kann man also lösen, indem man entweder
1. dafür sorgt, dass das Backend IMMER liefert durch Zwischenschaltung eines Wrappers, der dann aber eh HTML Quellcode liefern kann und die Einfärbung vornehmen könnte (hierfür bräuchte das Frontend nicht angefasst werden)
oder
2. das gesamte Dokument ausführbar lässt, weil der Request per AJAX gemacht wird (hierfür bräuchte das Backend nur wenig angefasst werden)

Das AJAX sieht abschreckend aus aber das ist es nicht. Entscheide dich, was du anfassen willst und du bekommst Hilfe. :confused:
 
Danke, habe es jetzt so gelöst:

Code:
<!DOCTYPE html>
<html>
<head>
<style>
body {background-color: black; font-family: verdana;}
h3 {color: white; text-align: left;}
p  {color: grey;  font-size: 10px;}
th {text-align: left; color: white; font-size: 11px;}
td {font-weight:bold; font-size: 11px;}
</style>
<title>SiteInfoObserver</title>
<script type="text/javascript">
var colorRed = "#FF0000";
var colorGreen = "#00FF00";
function refresh()
{setTimeout("document.location.reload();",3000);}
window.addEventListener("load", refresh);
function formatTime(num)
{num = (num < 10 ? '0' : '' )+ num;return num;}
function updateTime() 
{var date = new Date();
var hr = date.getHours();hr = formatTime(hr);
var min = date.getMinutes();min = formatTime(min);
var sec = date.getSeconds();sec = formatTime(sec);
var day = date.getDate();
var monthOfYear = date.getMonth();
var year = date.getFullYear();
var dayOfWeek = date.getDay();
var weekday = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
var month = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
var datum = weekday[dayOfWeek] + ", " + day + " " + month[monthOfYear] + " " + year + " " + hr + ":" + min  + ":" + sec;
document.getElementById('time').innerHTML = datum;}
window.addEventListener("load", updateTime);
function changeTable()
{var d = new Date();
var t = document.getElementById("nextcheck").innerHTML;
var d2 = new Date(t);
if (d2 > d) { document.getElementById("nextcheck").style.backgroundColor = colorGreen;} 
else {document.getElementById("nextcheck").style.backgroundColor = colorRed;}}
window.addEventListener("load", changeTable);
</script>
</head>
<body>
<h3>NIRIS SiteInfo<br>observer</h3>
<table>
<td width=154 Style="text-align:center; color:grey; font-size:9px">
Result of a scheduled checks of NIRISsiteInfo.xml(s). For more info read the manual.</td>
</table>
<table>
<tr><th width=154  >Last check</th></tr>
<tr><td id="lastcheck" bgcolor=#00FF00 >02.01.2021 19:51:31</td></tr>
<tr><th width=154  >Next check</th></tr>
<tr><td id="nextcheck" bgcolor=#00FF00 >02.01.2021 20:51:31</td></tr>
</table>
<table>
<td width=154  Style="color:yellow; font-size:9px; text-align:center"><div id="time"></div></td>
</table>
<table>
<tr>
<th width=110 Style="text-align:left">Server</th>
<th width=40 Style="text-align:center">Result</th></tr>
<tr>
<tr><td bgcolor=#FF0000 >Server1</td>
<td bgcolor=#FF0000 Style="text-align:center">NOK</td></tr>
<tr><td bgcolor=#FF0000 >Server2</td>
<td bgcolor=#FF0000 Style="text-align:center">NOK</td></tr>
<tr><td bgcolor=#FF0000 >Server3</td>
<td bgcolor=#FF0000 Style="text-align:center">NOK</td></tr>
<tr><td bgcolor=#FF0000 >Server4</td>
<td bgcolor=#FF0000 Style="text-align:center">NOK</td></tr>
<tr><td bgcolor=#FF0000 >Server5</td>
<td bgcolor=#FF0000 Style="text-align:center">NOK</td></tr>

</table>
</body>
</html>
 
Zurück
Oben