"Brian Emilius" <msn@emilius.dk> writes:
> Følgende funktioner udskriver dato og tid i formatet dd-m-åååå tt:mm:ss
Her skal du være opmærksom på om folk fra andre lande ser datoen. Hvis
de gør, så er det ikke et særlig godt format. En amerikaner ville fx nok
tolke det som mm-d-åååå hvis det giver mening.
Det eneste internationale datoformat er ISO-standarden åååå-mm-dd.
Den har også fordelen af at leksikalsk sortering giver kronologisk
orden.
Hvis det er til rent danske brugere, så kan du nok godt nøjes med
den her.
> Jeg kunne godt tænke mig at det bare blev dd-mm-åååå (altså med nul foran
> dagene 1-9 og månederne 1-9) og uden klokkeslet.
> Hvordan gør jeg det?
Der er flere måder.
> Kode:
>
> function str2dt (str_datetime) {
> var re_date = /^(\d+)\-(\d+)\-(\d+)\s+(\d+)\:(\d+)\:(\d+)$/;
Du er mere tilgivende med hvad du acepterer kan jeg se. :)
Der er ikke brug for backslash foran - og :, de kan fjernes uden
problemer. Overvej at sætte \s* foran og bag, så folk kan fumle lidt
med indtastningen.
> if (!re_date.exec(str_datetime))
> return alert("Ugyldig datoformat: "+ str_datetime);
> return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1, RegExp.$4, RegExp.$5,
> RegExp.$6));
Jeg bryder mig ikke om at bruge globale variable på den måde. Prøv den her:
---
function str2dt(str_datetime) {
var re_date =
/^\s*(\d{1,2})-(\d{1,2})-(\d+)\s+(\d{1,2}):(\d{1,2}):(\d{1,2})\s*$/;
var match = re_date.exec(str_datetime);
if (!match) {
alert("Ugyldigt datoformat: "+str_datetime);
return;
}
var yr = +match[3];
var mt = +match[2]-1;
var da = +match[1];
var date = new Date(0);
date.setFullYear(yr,mt,da);
if (date.getDate() != da || date.getMonth() != mt) {
alert("Datoen findes ikke: " + str_datetime);
return;
}
date.setHours(match[4],match[5],match[6]);
return date;
}
---
Den tester også for at man ikke indtaster den 32 april eller 30 februar.
Anyway, det var ikke dit spørgsmål :)
> }
> function dt2dtstr (dt_datetime) {
> return (new String (
Du har med altovervejende sandsynlighed *aldrig* brug for at lave et
string-objekt. Drop "new String(" og returner streng-værdien direkte.
---
function dt2dtstr(dt_datetime) {
return LZ(dt_datetime.getDate()) + "-" +
LZ(dt_datetime.getMonth()) + "-" +
dt_datetime.getFullYear() + " ";
}
---
og definer funktionen:
---
function LZ(n) { // leading zero
return (n<10?"0":"")+n;
}
---
> function dt2tmstr (dt_datetime) {
> return (new String (
>
> dt_datetime.getHours()+":"+dt_datetime.getMinutes()+":"+dt_datetime.getSecon
> ds()));
Her kan du også bruge LZ:
---
function dt2tmstr(dt_datetime) {
return LZ(dt_datetime.getHours()) + ":" +
LZ(dt_datetime.getMinutes()) + ":" +
LZ(dt_datetime.getSeconds());
}
---
> Venlig hilsen | <
http://emilius.dk>
> Brian Emilius | Emilius Consult designer Internettet
Hmm, en web designer. Er det her noget du har tænkt dig at bruge
kommercielt?
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'