Avatar billede compac Seniormester
22. oktober 2004 - 14:31 Der er 23 kommentarer og
1 løsning

Konvertering af dato

Jeg kan se at der er 117 måder at konvertere datoer på.
Jeg har en dato der ser således ud: Mon May 31 14:26:02 UTC+0200 2004

Jeg skal have den konverteret til dd-mm-yyyy.

Koden ser således ud:
var paschal = ["A14","A3","M23","A11","M31","A18","A8","M28","A16","A5","M25","A13","A2","M22","A10","M30","A17","A7","M27"];
rest = aar%19;
      p = paschal[rest];
      d.setMonth((p.indexOf("A") != -1) ? 3 : 2,parseInt(p.substring(1)));
      dag = d.getDay();
      var inds = d.setDate(d.getDate()+7-dag); 
      var pinse;
      pinse =  new Date(inds);
      d.setDate(pinse);
      var iInDays =50;
      var sFutureDate =new Date(pinse);
      txt = new Date(sFutureDate.setDate(sFutureDate.getDate()+iInDays));
  document.form1.resultat.value = txt;
Avatar billede powernodes Nybegynder
22. oktober 2004 - 14:34 #1
Avatar billede powernodes Nybegynder
22. oktober 2004 - 14:39 #2
og så kunne jeg forstille mig at det er dette du leder efter (kan du ikke huske hans propertites, det her er bare "standarden":

<script type="text/javascript">document.write(new Date().format('dd-MM-yyyy'));</script>
Avatar billede roenving Novice
22. oktober 2004 - 15:14 #3
Hvis du alligevel includer roenvingDate (download det og indsæt det !-)

<script type="text/javascript" src="roenvingDate.js></script>

-- kan du bruge dateDiff-funktionen, så:

var paschal = ["A14","A3","M23","A11","M31","A18","A8","M28","A16","A5","M25","A13","A2","M22","A10","M30","A17","A7","M27"];
rest = aar%19;
      p = paschal[rest];
      d.setMonth((p.indexOf("A") != -1) ? 3 : 2,parseInt(p.substring(1)));
      dag = d.getDay();
      d = d.setDate(d.getDate()+7-dag); 
      d = d.dateDiff('set',0,0,50);
      txt = d.format('dd-mm-yyyy');

-- og Peter havde helt ret med parametrene (dog har jeg fundet en anden løsning for minutter, så de store bogstaver er ikke nødvendige !-)
Avatar billede powernodes Nybegynder
22. oktober 2004 - 15:20 #4
..men de store bogstaver er nu rare fordi sådan virker det nemlig "normalt" :o)
Avatar billede roenving Novice
22. oktober 2004 - 15:27 #5
-- nej, men hvis du kigger efter, vil du se, at jeg i de lange formater bruger de store bogstaver til noget andet (nemlig til at muliggøre f.eks. jan, Jan, JAN og januar, Januar og JANUAR !-)

-- så minutter hedder derfor u !o]
Avatar billede compac Seniormester
22. oktober 2004 - 16:50 #6
Når jeg indsætter koden i en funktion og aktiverer den med en checkbox, kommer den og spørger efter et objekt i input- checkbox -linien. Skal jeg tilføje noget der?
Avatar billede roenving Novice
22. oktober 2004 - 16:52 #7
Har du indsat roenvingDate.js ?-)
Avatar billede compac Seniormester
22. oktober 2004 - 16:55 #8
Ja, den er indsat.
Funktionen bliver kaldt igennem denne funktion:
function oneOrNoCheckboxGroup (checkbox) {
  var checkboxGroup = checkbox.form[checkbox.name];
  if(!checkbox.checked)return funk(0);
  for (var c = 0; c < checkboxGroup.length; c++)
    if (checkboxGroup[c] != checkbox)
      checkboxGroup[c].checked = false;
  return funk(+checkbox.value.replace(/.*(\d+)$/,"$1"));
}
-som du har "revideret" tidligere.
Avatar billede roenving Novice
22. oktober 2004 - 16:59 #9
Kunne du linke til koden, som den ser ud nu ?-)
Avatar billede compac Seniormester
22. oktober 2004 - 17:04 #10
Avatar billede roenving Novice
22. oktober 2004 - 17:09 #11
Hov, det kan man ikke, så du skal:

<script type="text/javascript" src="roenvingDate.js"></script>

<script type="text/javascript">
Avatar billede compac Seniormester
22. oktober 2004 - 17:14 #12
Der kommer en fejl i linien :  d = d.dateDiff('set',0,0,50);

"Objektet understøtter ikke denne egenskab eller metode"
Avatar billede roenving Novice
22. oktober 2004 - 17:16 #13
Du har ikke opdateret uploaden ?-)
Avatar billede compac Seniormester
22. oktober 2004 - 17:18 #14
Jo, det er gjort.
Avatar billede roenving Novice
22. oktober 2004 - 17:40 #15
Gaab, en tåbefejl ...

      rest = aar%19;
      p = paschal[rest];
      d.setMonth((p.indexOf("A") != -1) ? 3 : 2,parseInt(p.substring(1)));
      dag = d.getDay();
      d.setDate(d.getDate()+7-dag); 
      d = d.dateDiff('set',0,0,50);
      txt = d.format('dd-mm-yyyy');

-- og så skal du fjerne var paschal-linje lige der, for den resulterer i, at der er fejl andre steder fordi den er defineret udenfor funktionen i forvejen !-)

-- og så kunne det skrives sammen til:

      rest = aar%19;
      p = paschal[rest];
      d.setMonth((p.indexOf("A") != -1) ? 3 : 2,parseInt(p.substring(1)));
      d = d.dateDiff('set',0,0,57-d.getDay());//det giver vel 2. pinsedag ?-)
      txt = d.format('dd-mm-yyyy');
Avatar billede compac Seniormester
22. oktober 2004 - 17:49 #16
Ja, nu er det OK. Tak for hjælpen. læg et svar.
Avatar billede roenving Novice
23. oktober 2004 - 02:14 #17
Når du nu bruger roenvingDate-biblioteket, skal Peter jo have en solid bid, for jeg nåede jo (bl.a. !-) kun at forvirre dig ...

-- og hvis den alligevel er inde (jeg overvejede et øjeblik at give dig den i et af de tidligere spørgsmål !-), kan vi jo ligesågodt bruge den fuldt ud:

<script type="text/javascript" src="../Udvikling/roenvingDate.js"></script>
<script type="text/javascript">
var paschal = ["A14","A3","M23","A11","M31","A18","A8","M28","A16","A5","M25","A13","A2","M22","A10","M30","A17","A7","M27"];
var d = new Date(),aar = d.getFullYear();

function funk(n) {
  var txt = "";

  switch(n){
  <!-- valentinsdag  -->
    case(1):
      maaned = 2;
      dag = 14;
      txt = rD_twoDigits(dag)+"-"+rD_twoDigits(maaned)+"-"+aar;
      break;
  <!-- paaskedag -->
    case(2):
      rest = aar%19;
      p = paschal[rest];
      d.setMonth((p.indexOf("A") != -1) ? 3 : 2,parseInt(p.substring(1)));
      dag = d.getDay();
      d.setDate(d.getDate()+7-dag);    //1. påskedag
      txt = d.format('dd-mm-yyyy');
      break;
     
  <!-- morsdag -->
    case(3):
      d.setDate(1);
      d.setMonth(4);
//      if(new Date().getTime()>d.getTime())d.setYear(d.getFullYear()+1);
      var MDag = (d.getDay()==0)?8:15 - d.getDay();
      d.setDate(MDag);     
      txt = d.format('dd-mm-yyyy');
      break;
     
      <!-- pinsedag -->
    case(4):
      rest = aar%19;
      p = paschal[rest];
      d.setMonth((p.indexOf("A") != -1) ? 3 : 2,parseInt(p.substring(1)));
      d = d.dateDiff('set',0,0,56-d.getDay());//1.pinsedag
      txt = d.format('dd-mm-yyyy');
     
      break;
  }
  document.form1.resultat.value = txt;
}

function oneOrNoCheckboxGroup (checkbox) {
  var checkboxGroup = checkbox.form[checkbox.name];
  if(!checkbox.checked)return funk(0);
  for (var c = 0; c < checkboxGroup.length; c++)
    if (checkboxGroup[c] != checkbox)
      checkboxGroup[c].checked = false;
  return funk(+checkbox.value.replace(/.*(\d+)$/,"$1"));
}
</script>
<form name="form1"><font face="Verdana" size="3"><br>
<br>
<br>
Valentins dag: <input type="checkbox" name="box1" value="v1" onclick="oneOrNoCheckboxGroup(this);"><br>

<br>
Påskedag: <input type="checkbox" name="box1" value="v2" onclick="oneOrNoCheckboxGroup(this);"><br>

<br>
Mors dag: <input type="checkbox" name="box1" value="v3" onclick="oneOrNoCheckboxGroup(this);"><br>

<br>
Pinsedag: <input type="checkbox" name="box1" value="v4" onclick="oneOrNoCheckboxGroup(this);"><br>

<input type="text" name="resultat" size="50"><br>
</form>

-- og jeg har udkommenteret fremskrivningen af mors dag, for det virkede tåbeligt, at den var næste år, når de andre var i år !-)

-- dem skal vi nok også klare, hvis du vil have næstkommende på dem !o]
Avatar billede compac Seniormester
23. oktober 2004 - 22:13 #18
Helt fint. Egentlig burde der ligge en advarsel til brugeren (alert-box), hvis resultat-feltets dato er ældre end dags dato.
Avatar billede roenving Novice
24. oktober 2004 - 09:24 #19
function funk(n) {

  switch(n){
  <!-- valentinsdag  -->
    case(1):
      d.setMonth(1);
      d.setDate(14);
      break;
  <!-- paaskedag -->
    case(2):
      rest = aar%19;
      p = paschal[rest];
      d.setMonth((p.indexOf("A") != -1) ? 3 : 2,parseInt(p.substring(1)));
      dag = d.getDay();
      d.setDate(d.getDate()+7-dag);    //1. påskedag
      break;
     
  <!-- morsdag -->
    case(3):
      d.setDate(1);
      d.setMonth(4);
//      if(new Date().getTime()>d.getTime())d.setYear(d.getFullYear()+1);
      var MDag = (d.getDay()==0)?8:15 - d.getDay();
      d.setDate(MDag);     
      break;
     
      <!-- pinsedag -->
    case(4):
      rest = aar%19;
      p = paschal[rest];
      d.setMonth((p.indexOf("A") != -1) ? 3 : 2,parseInt(p.substring(1)));
      d = d.dateDiff('set',0,0,56-d.getDay());//1.pinsedag
      break;
  }
  document.form1.resultat.value = d.format('dd-mm-yyyy');
  if(d.toDays()<new Date().toDays())alert('Datoen er før idag !-)')
}
Avatar billede compac Seniormester
24. oktober 2004 - 14:33 #20
Der opstår en fejmedd.: "d" er ikke defineret i hhv. valentinsdag og morsdag. I påskedag og pinsedag kommer der fejmedd: aar er ikke defineret.
Avatar billede roenving Novice
25. oktober 2004 - 03:28 #21
Du skal kun udskifte funktionen, ikke resten af scriptet ...
Avatar billede compac Seniormester
26. oktober 2004 - 09:20 #22
Nu er det OK - nu fortjerner du nogle points.
Avatar billede roenving Novice
26. oktober 2004 - 17:08 #23
-- og powernodes, vel sagtens !-)

Velbekomme '-)
Avatar billede roenving Novice
29. november 2004 - 13:50 #24
Tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester