Toon posts:

[javascript] datum-format veranderen

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb een verjaardagen(java)script om weten te bouwen naar een evenementenkalender. Hierin worden de evenementen van de komende 9 dagen weergegeven. Dat was relatief makkelijk.
Mijn vraag is van cosmetische aard, maar gaat me boven mijn pet. :?
De output van het script geeft de datum weer als mm/dd/yyyy. Ik zou dit graag willen veranderen in dd.mm.yy, maar kom er echt niet uit. 8)7
De datum alleen stomweg anders invoeren onder var arrBday is niet voldoende.

Iemand suggesties?

dit is de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<script type="text/javascript">
Date.prototype.getDiff = function(date, interval){
  if (typeof date == "string"){
     date = new Date(date);
  }
  if (isNaN(date) || !(date instanceof Date)){
     return NaN; //invalid date passed
  }
  if (typeof interval == "undefined") interval = "ms"; //msec (default)
  var diff = this - date; //alert(this+' - '+date+" = "+diff)//diff in msec
  switch(interval.toLowerCase()){
    case "s": //sec
      diff = diff/1000; break;
    case "n": //min
      diff = diff/(1000*60); break;
    case "h": //hr
      diff = diff/(1000*60*60); break;
    case "d": //day
      diff = diff/(1000*60*60*24); break;
    case "m": //month
      diff = diff/(1000*60*60*24*30); break;
    case "y": //year
      diff = diff/(1000*60*60*24*365); break;
    default:
      ; //msec
  }
  return Math.floor(diff);
}

var arrBday = [
  ['event1','8/27/2005'],
  ['event2','8/27/2005'],
  ['event3','8/28/2005'],
  ['event4','8/28/2005'],
  ['event5','8/30/2005'],
  ['event6','9/10/2005']
];

function getBdayList(numDays){
  var bday,temp,idx,diff;
  var today = new Date();
  var bdayList = new Array();
  for (var i=0;i<arrBday.length;i++){
    bday = new Date(arrBday[i][1]);
    if (isNaN(bday)) continue;
    temp = new Date(today.getFullYear(), bday.getMonth(), bday.getDate(), 23, 59, 59, 999);
    diff = temp.getDiff(today, "d");
    if (diff >= 0 && diff <= numDays){
       idx = bdayList.length;
       bdayList[idx] = new Object();
       bdayList[idx].name = arrBday[i][0];
       bdayList[idx].bday = arrBday[i][1];

    }
  }
  return bdayList;
}

function displayBdayList(){
  var bdayList = getBdayList(7);
  var len = bdayList.length;
  var s = "";
  if (len>0){
    for (var i=0; i<len; i++){
       if (s != ""){
          s += " " + bdayList[i].bday + " - " + bdayList[i].name + " <br />"
       }
       else{
          s = bdayList[i].bday + " - " + bdayList[i].name + " <br />"
       }
     }
  }
  else{
    s = "geen activiteiten.";
  }
  document.write(s);
}
</script>

Verwijderd

Zal denk ik niks anders op zitten dan de boel ontleden en zelf samenvoegen in een stringetje die er dan ongeveer uit gaat zien als
code:
1
s = ""+dd+"."+mm+"."+yy;

maar veel succes ermee, ik krijg van het date-object ook altijd hoofdpijn :X

Verwijderd

vervang:
code:
1
document.write(s);


door

code:
1
document.write(s.replace("/",".");

Verwijderd

Topicstarter
Verwijderd schreef op zondag 28 augustus 2005 @ 16:56:
Zal denk ik niks anders op zitten dan de boel ontleden en zelf samenvoegen in een stringetje die er dan ongeveer uit gaat zien als
code:
1
s = ""+dd+"."+mm+"."+yy;

maar veel succes ermee, ik krijg van het date-object ook altijd hoofdpijn :X
bedankt voor je reactie, maar mijn js-kennis is verre van toereikend hiervoor ;(

Verwijderd

Topicstarter
Verwijderd schreef op zondag 28 augustus 2005 @ 17:05:
vervang:
code:
1
document.write(s);


door

code:
1
document.write(s.replace("/",".");
dit verandert alleen de eerste / in de eerste datum...... |:(
toch bedankt... :)

Verwijderd

Verwijderd schreef op zondag 28 augustus 2005 @ 17:05:
vervang:
code:
1
document.write(s);


door

code:
1
document.write(s.replace("/",".");
hij wil ook de volgorde veranderd hebben :) dus alleen replace bied hier ook geen uitkomst

Verwijderd

Ah wat een buktaal is dat javascript ook. :) *

Goed, poging 2.. vervang:
code:
1
document.write(s);


door:
code:
1
document.write(s.substr(3,2) + "." + s.substr(0,2) + "." + s.substr(6,4));


* fouten liggen uiteraard nooit aan de programmeur, maar altijd aan de taal ;)

offtopic:
dit is dus script freak's antwoord, alleen dan uitgewerkt ;)

[ Voor 77% gewijzigd door Verwijderd op 28-08-2005 18:30 ]


Verwijderd

Topicstarter
output: 8/.8/.005 :o

Verwijderd

haha

[knip] hoop onzin [/knip]

ah.. nev mind.. ik heb poep in mijn ogen. Ik zie het probleem al.

Jij hebt data in dit format:

1/1/2005

terwijl je ze beter zo op kunt geven:
01/01/2005

momentje.. ik moet nu koken/eten, maar zal daarna even een werkende versie voor je brouwen.

[ Voor 112% gewijzigd door Verwijderd op 28-08-2005 18:47 ]


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 02-01 15:55
Dan is het gewoon een kwestie van indexOf gebruiken om de positie van de '/' te bepalen en dan de substr methode daarop toepassen!

If I can't fix it, it ain't broken.


Verwijderd

code:
1
2
3
4
5
6
7
8
      pos = s.indexOf("/");
      day = s.substr(0,pos);
      s = s.substr(pos+1,s.length);
      pos = s.indexOf("/");
      month = s.substr(0,pos);
      year = s.substr(pos+1,s.length);
      s = day + "." + month + "." + year;
      document.write(s);


Daar.. en getest, hij werkt :)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:52

crisp

Devver

Pixelated

waarom zo moeilijk doen met substrings enzo? Je kan toch gewoon met een Date object werken?
JavaScript:
1
2
3
4
var ds = '8/27/2005';
var d = new Date(ds);
var s = d.getDate() + '.' + (d.getMonth() + 1) + '.' + d.getFullYear();
alert(s);

Intentionally left blank


Verwijderd

/me houdt van moeilijk doen :P

offtopic:
Om eerlijk te zijn is javascript niet zo mijn 'ding'.. ik wist van het date object, maar niet dat die een 'mm/dd/yyyy' als input lustte..

[ Voor 69% gewijzigd door Verwijderd op 29-08-2005 10:37 ]


Verwijderd

Topicstarter
opgelost! :Y)
de oorspronkelijke schrijvert van het script is met de oplossing gekomen:
'k hoop dat het zo duidelijk is...

bedankt voor de voorstellen! _/-\o_
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[knip]
..


  bdayList[idx] = new Object();
       bdayList[idx].name = arrBday[i][0];
       bdayList[idx].bday = bday.getDate().padZero() + "." + (bday.getMonth()+1).padZero() + "." + bday.getFullYear().toString().substr(2,2);  //dd.mm.yy
    }
  }
  return bdayList;
}

Number.prototype.padZero = function(){
  var num = (this<10) ?  "0" + this : "" + this;
  return num;
}


..
[knip]

[ Voor 8% gewijzigd door Verwijderd op 29-08-2005 13:30 ]

Pagina: 1