|
< Wochentag >
Den Wochentag eines beliebigen Datums zwischen dem 01.01.0001 und dem 31.12.9999 mit WMLScript berechnen.
WAP-Standard: 1.1+
wochentag.wml
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="c1" title="Wochentag">
<p>Form: TT.MM.JJJJ</p>
<p>
<input name="date"/>
<a href="wochentag.wmls#init('$(date)')">Start</a>
</p>
</card>
<card id="c2" title="Wochentag">
<p>$(weekday)</p>
<p><a href="#c1">Neue Eingabe</a></p>
</card>
</wml>
wochentag.wmls
function getWeekDay(date) {
// Allgemeines Vorgehen:
// Referenztag ist Samstag, der 01.01.0001.
// Nun werden alle Tage bis zum Eingabe-Datum gezählt.
// Alle-Vergangenen-Tage modulo 7 ergibt dann eine Zahl
// zwischen 0 und 6, die einen Wochentag
// zwischen Samstag und Freitag repräsentiert.
// Datum auslesen
var dd = String.subString(date,0,2);
var mm = String.subString(date,3,2);
var yyyy = String.subString(date,6,4);
// grobe Zählung: Ganze Jahre +
// Tage im aktuellen Monat + ganze Monate im aktuellen Jahr
var days = (yyyy-1)*365 + (dd-1)*1;
for(var i=0;i<mm-1;i++) days +=
String.elementAt("31 28 31 30 31 30 31 31 30 31 30 31",i," ")*1;
// Kalenderreform: Sprung vom 04.10.1582 zum 15.10.1582
if(yyyy>1582 || yyyy==1582 && (mm>10 || mm==10 && dd>4))
days -= 10;
if(yyyy==1582 && mm==10 && dd>4 && dd<15)
return "Datum existiert nicht";
// Schaltjahre bis 1599: alle Jahre, die durch 4 teilbar sind.
// Ab 1600: alle Jahre, die durch 4 teilbar sind,
// außer den vollen Jahrhunderten,
// es sei denn, sie sind durch 400 teilbar.
var leapyears = yyyy div 4;
if(yyyy%4==0 && mm<3) leapyears--;
if(yyyy>=1600) {
leapyears -= (yyyy-1600) div 100;
leapyears += (yyyy-1600) div 400;
if(yyyy%100==0&& mm<3) {
leapyears++;
if(yyyy%400==0) leapyears--;
}
}
days += leapyears;
return String.elementAt("Sa So Mo Di Mi Do Fr",days%7," ")
+", "+ dd+"."+mm+"."+yyyy;
}
extern function init(date) {
var weekday = getWeekDay(date);
WMLBrowser.setVar("weekday", weekday);
WMLBrowser.go("wochentag.wml#c2");
}
Download Wochentag.zip (ca. 1,5 kb)
Copyright © 2002-2003 by wmlscript.de - Alle Rechte vorbehalten
Impressum | Datenschutz | eMail
|