JavaScript: Jahreszahl in ihre Bestandteile zerlegen

Hidden Evil

Moderator
Teammitglied
nabend,

ich habe zwar dannach schon vor einiger Zeit im Bezug auf C++ gefragt, aber bei Javascript ist nun etwas anders.

Ich habe ein JavaScript, bei dem u.a. die Monatszahl in Zehner und Einer zerlegt, in ein Array gesteckt und später das Array hintereinander ausgegeben wird.

Zur Zerlegung der anderen Werte lautet der Befehl:
Code:
var tme=((mon < 10)?"0"+mon:mon)+''+((day < 10)?"0"+day:day)+''+((hours < 10)?"0"+hours:hours)+''+((minutes < 10)?"0"+minutes:minutes);

Aber wie zum Henker geht das bei der vierstelligen Jahreszahl ???

Könnt ihr mir da auf die Sprünge helfen? Wär Super :)
 
Aber wie zum Henker geht das bei der vierstelligen Jahreszahl ???
Präzisier die Frage. Das Skript sorgt dafür, daß einstellige Werte eine Null vorgestellt bekommen. Aber was willst du mit der Jahreszahl anstellen? Die ersten zwei Stellen wegkürzen? Irgendwas machen abhängig davon, ob das Jahr mit 19.. oder 20.. anfängt? Oder wie oder wer oder wat?
 
Aaalso:

Ich bin gerade dabei, eine Digital-Uhr mit Javascript zu erstellen. Ok, den größten Teil habe ich vordefiniert bekommen. Die Zahlen, die ich als Grafiken habe, sind von 0-9; dafür müssen die (Zweistelligen) Zahlen aufgeteilt werden. Das macht, so wie ich es verstanden habe, diese Zeile, die ich bereits oben gepostet hab.

Mit Hilfe der o.g. Zeile werden den Feldern des Arrays also nacheinander die Werte zugewiesen, also Zehnerstelle von Monat, dann die Einerstelle des Monats, dann Zehner vom Tag, Einer vom Tag .......

So, nun die Frage, wie ich das mit der vierstelligen Jahreszahl machen muss.

PS:
Wenn ich lieber mal das gesamte Script posten soll, sag Bescheid.
 
Bescheid ;)

So wie ich das sehe, zerlegt die Zeile oben nämlich nix, sondern setzt einen String zusammen (aus den Variablen mon, day, hours, minutes). tme enthält danach einen String der Form MM-DD-hh-mm.

Code:
(mon < 10)?"0"+mon:mon)
entspricht nämlich einer if-the-else-Bedingung. Wenn Bedingung erfüllt, nimm das nach dem Fragezeichen, sonst das nach dem Doppelpunkt. In dem speziellen Fall: Wenn (mon < 10), nimm "0"+mon (häng eine Null vor), sonst nimm mon.
 
achsoooo :)

Code:
<html>

<style TYPE="text/css">
body
{
background-color:#000000;
Background-Image: url(bilder/background.bmp);
Background-Repeat:no-repeat;
}
</style>

<head>
<title></title>


<!-- ::::::::::::::::::::: script im head :::::::::::::::::::::::-->
<script language="JavaScript">
<!-- 
Pics=new Array()
Load=new Array()
for(i=0; i < 11; i++){
Pics[i]=i+".bmp";
}
for(i=0; i < Pics.length; i++){
 Load[i]=new Image();
 Load[i].src="bilder/"+Pics[i];
}
function imageclock(){
now=new Date();
seconds=now.getSeconds();
minutes=now.getMinutes();
hours=now.getHours();
mon=now.getMonth()+1;
day=now.getDay()+2;
year=now.getYear();

var tme=((mon < 10)?"0"+mon:mon)+''+((day < 10)?"0"+day:day)+''+((hours < 10)?"0"+hours:hours)+''+((minutes < 10)?"0"+minutes:minutes);
for (i=0; i < tme.length; i++){
document.images["t"+i].src="bilder/"+tme.charAt(i)+".bmp";
}
setTimeout('imageclock()',100);
}
window.onload=imageclock;
//-->
</script>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->

</head>

<body>


<div style="position:absolute; top:14px; left:9px">
<img name="t0" src="bilder/10.bmp"></div>
<div style="position:absolute; top:14px; left:23px">
<img name="t1" src="bilder/10.bmp"></div>

<div style="position:absolute; top:14px; left:49px">
<img name="t2" src="bilder/10.bmp"></div>
<div style="position:absolute; top:14px; left:63px">
<img name="t3" src="bilder/10.bmp"></div>


<div style="position:absolute; top:14px; left:162px">
<img name="t4" src="bilder/10.bmp"></div>
<div style="position:absolute; top:14px; left:176px">
<img name="t5" src="bilder/10.bmp"></div>

<div style="position:absolute; top:14px; left:204px">
<img name="t6" src="bilder/10.bmp"></div>
<div style="position:absolute; top:14px; left:218px">
<img name="t7" src="bilder/10.bmp"></div>

</body>
</html>

Aussehen soll es später so: (fehlt halt nur noch das Jahr) ;)
 

Anhänge

  • uhr.jpg
    uhr.jpg
    4,1 KB · Aufrufe: 236
Ist mir noch eingefallen:

Als du mir das mal bei C++ gezeigt hast, hattest du mir folgenden Code gegeben:

Code:
Tsdr = Zahl / 1000; // Tausender-Stelle ermitteln
Zahl = Zahl % 1000; // Tausender-Stelle absäbeln für nächste Operation
Hndr = Zahl / 100; // Hunderter-Stelle ermitteln
Zahl = Zahl % 100; // Hunderter-Stelle abschnibbeln
Zhnr = Zahl / 10; // Zehner-Stelle ermitteln
Zahl = Zahl % 10; // und wech damit 
Einr = Zahl; // eigentlich Einr =  Zahl / 1; naja *g*

Kann man das nicht auch bei JS machen, und zwischen day und hour einfügen, damit es mit in das Array kommt?
 
Hmm, ich glaube, du machst dir zu viele Sorgen. :) Theoretisch ändert sich nicht viel:

Code:
var tme=((mon < 10)?"0"+mon:mon)+''+((day < 10)?"0"+day:day)+''+year+''+((hours < 10)?"0"+hours:hours)+''+((minutes < 10)?"0"+minutes:minutes);
Mal vorausgesetzt, das Jahr wird vierstellig ausgegeben. Denn wie gesagt, zerlegt wird nix, sondern zusammeengesetzt.

Die Zeile mach folgendes: Aus dem Datum 7.5.2004 13 Uhr, 5 Minuten wird der String
050720041305
gebastelt. (Ursprünglich, also ohne +year, 05071305). Das Skript rappelt diesen String zeichenweise durch und holt sich jedesmal die passende Grafik (bei einer 5 die 5.bmp). Die Arrays enthalten nur den Bildnamen oder einen Verweis auf die Grafik. (Bin da aber nicht 100% sicher, JavaSkript ist nicht ganz meine Welt - aber ähnlich genug zu C und Co.)
 
DANKE DANKE DANKE :D hat prima funktionuckelt :)

Aber irgendwie wollen die Fehler mich nicht in Ruhe lassen. Und zwar, hab ich mal testweise auf 2005 in der Systemzeit gestellt, und auf einmal hat sich der Tag auch verändert. Habe ich das richtig gemacht mit dem day=now.getDay()+2; ??? ich vermute mal, da ist noch ein Bug drin.
 
Hab ein bisserl danach gegoogelt. getDay() gibt eine Zahl zurück, die den Wochentag repräsentiert. 0 für Sonntag, 1 für Montag, ..., 6 für Freitag. Tag des Monats (1-31) gibbet mit getDate().
 
Oben