Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]operacje na dacie
Forum PHP.pl > Forum > Przedszkole
Ciubas
witam,

mam taki problem (mam ich mnustwo ale duzo potrafie sam rozwiazac biggrin.gif)

konstrukcja:

  1. <script language="JavaScript">
  2. function update(Firma) {
  3. var data_od=parseFloat(document.forms.Firma['data_od'].value);
  4. var data_do=parseFloat(document.forms.Firma['data_do'].value);
  5. var miesiace=parseFloat(document.forms.Firma['miesiace'].value);
  6.  
  7.  
  8.  
  9. var okres = data_od + miesiace;
  10.  
  11.  
  12. document.forms.Firma['data_do'].value=okres;
  13. }
  14.  
  15. Od: <input name="data_od" type="textbox" size="8" value="<?php echo date('Y-m-d'); ?>" onChange="update(this.form)>
  16. Do: <input name="data_do" type="textbox" size="8" value="<?php echo date('Y-m-d',(strtotime(date('Y-m-d')) + (60*60*24*91))); ?>">
  17. miesiące: <input name="miesiace" type="textbox" size="2" value="3" onChange="update(this.form)">


chcialbym zeby po wpisaniu np 6 w pole miesiace, do pola: data_od zostaly dodane np 6 miesiecy i wpisane do data_do - mam z tym straszny problem w php to chwila, ale tutaj nie wiem jak dodac do siebie ta glupia date;/ (data_od tez moze byc modyfikowana dlatego jest zczytywana i w momencie jej zmiany, przeliczany caly formularz)
ddiceman
Kod
<script type="text/javascript">
    var d = new Date();
    var months = 12;
    var e = new Date();
    e.setMonth((d.getMonth() + months) % 12);
    e.setYear(d.getYear() + Math.floor((d.getMonth() + months)/12));
    document.write(e);
</script>
Ciubas
cos spieprzylem....

  1. var data_od=parseFloat(document.forms.Firma['data_od'].value);
  2. var data_do=parseFloat(document.forms.Firma['data_do'].value);
  3. var miesiace=parseFloat(document.forms.Firma['miesiace'].value);
  4.  
  5.  
  6. var d = data_od;
  7. var months = miesiace;
  8. var e = data_do;
  9. e.setMonth((d.getMonth() + months) % 12);
  10. e.setYear(d.getYear() + Math.floor((d.getMonth() + months)/12));
  11.  
  12.  
  13.  
  14. document.forms.Firma['data_do'].value=e;


pomijam fakt formatowania daty (jest pelna) a mi chodzi tylko o zapis: 2009-03-09
ddiceman
Len jestes, bo dostales gotowy algorytm. Dla wersji YYYY-MM-DD:
Kod
<script type="text/javascript">
    var d = '2009-03-09';
    var months = 12;


    var data = d.split('-');
    data[0] = parseInt(data[0]) + Math.floor((parseInt(data[1]) + months)/12);
    data[1] = (parseInt(data[1]) + months - 1)%12 + 1;
    data[1] = data[1] < 10 ? '0'+data[1] : data[1];

    document.write(data[0] + '-' + data[1] + '-' + data[2]);
</script>
Ciubas
witam,

bardzo dziekuje, nie wpadlbym na taka mozliwosc podzielenia daty, teraz wszystko dziala wysmienicie, dziekuje jeszcze raz za pomoc!
Orkan
mozna prosciej
Kod
var d = "2009-03-09".split('-');
var months = 12;

var data = new Date(d[0], d[1]-1, d[2]);
data.setMonth(data.getMonth() + months);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.