Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dodawanie elementów do tablicy
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
kaznodziej/ka
1. GENERUJĘ TABLICĘ
  1. var Tablica = [];
  2. Tablica[0] = ['1989-10-1', '1989-11-17', parseFloat("0.0032")];
  3. Tablica[1] = ['1989-11-18', '1989-12-31', parseFloat("0.005")];
  4. Tablica[2] = ['1990-01-1', '1990-01-31', parseFloat("0.023")];
  5. Tablica[3] = ['1990-02-1', '1990-02-28', parseFloat("0.013")];
  6. Tablica[4] = ['1990-03-1', '1990-03-31', parseFloat("0.006")];
  7. Tablica[5] = ['1990-04-1', '1990-04-30', parseFloat("0.005")];
  8. Tablica[6] = ['1990-05-1', '1990-05-31', parseFloat("0.0035")];
  9. Tablica[7] = ['1990-06-1', '1990-06-30', parseFloat("0.0025")];
  10. Tablica[8] = ['1990-07-1', '1990-10-15', parseFloat("0.0018")];
  11. Tablica[9] = ['1990-10-16', '1990-11-25', parseFloat("0.0023")];
  12. Tablica[10] = ['1990-11-26', '1991-01-31', parseFloat("0.003")];
  13. Tablica[11] = ['1991-02-1', '1991-04-30', parseFloat("0.0039")];
  14. Tablica[12] = ['1991-05-1', '1991-07-7', parseFloat("0.0032")];
  15. Tablica[13] = ['1991-07-8', '1991-08-1', parseFloat("0.0027")];
  16. Tablica[14] = ['1991-08-2', '1991-09-14', parseFloat("0.0024")];
  17. Tablica[15] = ['1991-09-15', '1993-02-28', parseFloat("0.002")];
  18. ....


pola oznaczaja: 1. data poczatkowa 2. data koncowa 3. stopa procentowa w podanym przedziale czasowym wyrazone w formie liczby zmiennoprzecinkowej

chcę dodać pola: data z pierwszej kolumny wyrażona w milisekundach, data z pierwszej kolumny wyrażona w milisekundach, ilosc dni w podanym przedziale czasowym, naliczone odsetki, stopa procentowa wyrażona przesunięta o 2 miejsca po przecinku, data z pierwszej i drugiej kolumny sformatowana do post: DD/MM/RRRR

2. Definiuję parametry
  1. kwota = parseFloat(document.getElementById("kwota").value);


3. DODAJE ELEMENTY DO TABLICY

  1. for (i = 0; i < Tablica.length; i++) {
  2. //data z pierwszej kolumny tablicy w milisekundach
  3. str_od = Tablica[i][0].split('-');
  4. //document.write(str[0]+' '+str[1]+' '+str[2]); //testowanie poprawnosci
  5. data_od_tabl_milisek = new Date(str_od[0], str_od[1] - 1, str_od[2]).getTime();
  6. //document.write(data_od_tabl_milisek); //testowanie poprawnosci
  7. dlugosc_Tablica_i_3 = Tablica[i].push(data_od_tabl_milisek); //dodanie rekordu na końcu tablicy
  8.  
  9. //data z drugiej kolumny tablicy
  10. str_do = Tablica[i][1].split('-');
  11. data_do_tabl_milisek = new Date(str_do[0], str_do[1] - 1, str_do[2]).getTime();
  12. dlugosc_Tablica_i_4 = Tablica[i].push(data_do_tabl_milisek); //dodanie rekordu na końcu tablicy
  13.  
  14. //ilośc dni pomiedzy data z pierwszej kolumny a data z drugiej kolumny
  15. number_of_day_between = ((data_do_tabl_milisek - data_od_tabl_milisek) / (1000 * 60 * 60 * 24));
  16. dlugosc_Tablica_i_5 = Tablica[i].push(number_of_day_between); //dodanie rekordu na końcu tablicy
  17.  
  18. //odsetki w podanym okresie czasowym od podanej kwoty (zdefiniowana wyzej)
  19. odsetki_between = parseFloat(((kwota * Tablica[i][2]) / 365) * Tablica[i][5]); // ((kwota * odsetki)/365) * ilosc-dni
  20. odsetki_between_gr = Math.decimal(odsetki_between, 2);
  21. dlugosc_Tablica_i_6 = Tablica[i].push(odsetki_between_gr); //dodanie rekordu na końcu tablicy
  22. //document.write(Tablica[i]); //testowanie poprawnosci
  23.  
  24. // przeliczenie stopy procentowej w kolumny 3 na %
  25. stopa_wyswietl = Tablica[i][2] * 100 // przeliczenie odsetek na %!!!
  26. dlugosc_Tablica_i_7 = Tablica[i].push(stopa_wyswietl); //dodanie rekordu na końcu tablicy
  27.  
  28. //daty z pierwszej i drugiej kolumny w innej formie
  29. data_od_wyswietl = str_od[2] +'/'+str_od[1]+'/'+str_od[0];
  30. dlugosc_Tablica_i_8 = Tablica[i].push(data_od_wyswietl); //dodanie rekordu na końcu tablicy
  31.  
  32. data_do_wyswietl = str_do[2] +'/'+str_do[1]+'/'+str_do[0];
  33. dlugosc_Tablica_i_9 = Tablica[i].push(data_do_wyswietl); //dodanie rekordu na końcu tablicy
  34.  
  35. document.write(Tablica[i]+' '); //testowanie poprawnosci
  36. }


OTO WYNIK:
  1. 1989-10-1,1989-11-17,0.0032,623196000000,627260400000,47.041666666666664,0.25,0.32,1/10/1989,17/11/1989
  2. 1989-11-18,1989-12-31,0.005,627346800000,631062000000,43,0.35,0.5,18/11/1989,31/12/1989
  3. 1990-01-1,1990-01-31,0.023,631148400000,633740400000,30,1.13,2.3,1/01/1990,31/01/1990
  4. 1990-02-1,1990-02-28,0.013,633826800000,636159600000,27,0.58,1.3,1/02/1990,28/02/1990
  5. 1990-03-1,1990-03-31,0.006,636246000000,638834400000,29.958333333333332,0.3,0.6,1/03/1990,31/03/1990
  6. 1990-04-1,1990-04-30,0.005,638920800000,641426400000,29,0.24,0.5,1/04/1990,30/04/1990
  7. 1990-05-1,1990-05-31,0.0035,641512800000,644104800000,30,0.17,0.35000000000000003,1/05/1990,31/05/1990
  8. 1990-06-1,1990-06-30,0.0025,644191200000,646696800000,29,0.12,0.25,1/06/1990,30/06/1990
  9. 1990-07-1,1990-10-15,0.0018,646783200000,655941600000,106,0.31,0.18,1/07/1990,15/10/1990
  10. 1990-10-16,1990-11-25,0.0023,656028000000,659487600000,40.041666666666664,0.15,0.22999999999999998,
    16/10/1990,25/11/1990
  11. 1990-11-26,1991-01-31,0.003,659574000000,665276400000,66,0.33,0.3,26/11/1990,31/01/1991
  12. 1991-02-1,1991-04-30,0.0039,665362800000,672962400000,87.95833333333333,0.56,0.38999999999999996,1/02/1991,30/04/1991
  13. 1991-05-1,1991-07-7,0.0032,673048800000,678837600000,67,0.35,0.32,1/05/1991,7/07/1991
  14. 1991-07-8,1991-08-1,0.0027,678924000000,680997600000,24,0.11,0.27,8/07/1991,1/08/1991
  15. 1991-08-2,1991-09-14,0.0024,681084000000,684799200000,43,0.17,0.24,2/08/1991,14/09/1991
  16. 1991-09-15,1993-02-28,0.002,684885600000,730854000000,532.0416666666666,1.75,0.2,15/09/1991,28/02/1993
  17. 1993-03-1,1994-05-12,0.0019,730940400000,768693600000,436.9583333333333,1.37,0.19,1/03/1993,12/05/1994
  18. 1994-05-13,1995-02-20,0.0018,768780000000,793234800000,283.0416666666667,0.84,0.18,13/05/1994,20/02/1995
  19. 1995-02-21,1995-05-28,0.0019,793321200000,801612000000,95.95833333333333,0.3,0.19,21/02/1995,28/05/1995
  20. 1995-05-29,1995-09-17,0.0016,801698400000,811288800000,111,0.29,0.16,29/05/1995,17/09/1995
  21. 1995-09-18,1996-01-7,0.0015,811375200000,820969200000,111.04166666666667,0.27,0.15,18/09/1995,7/01/1996
  22. 1996-01-8,1997-12-31,0.0014,821055600000,883522800000,723,1.66,0.13999999999999999,8/01/1996,31/12/1997
  23. ....

Mam pytanie. Czemu wylicza mi zła ilość dni? np. w okresie miedzy 1.03 a 31.01 wyliczył 30 dni...Czy wystarczy, jeśli dodam +1 do wyliczonej wartości..
np.w piątym wierszu wyliczyło mi ilość dni 29.958333333333332, w pierwszym 47.041666666666664... czemu?
w niektórych wierszach pomnożenie kolumny 3 przez 100 daje dziwny rezutlat: np. w wierszu 7 daje ileś miejsc po przecinku i też nie wiem czemu...

Czy ktos moze pomóc?

Pozdrawiam






gr56
Nie widzę nigdzie w twoim zestawie danych okresu 1.03 - 31.01.

Liczby po przecinku wynikają ze zmiany czasu w danym okresie z letniego na zimowy lub na odwrót.
kaznodziej/ka
1. Nie widzę nigdzie w twoim zestawie danych okresu 1.03 - 31.01.

->
1990-03-1,1990-03-31

2. Liczby po przecinku wynikają ze zmiany czasu w danym okresie z letniego na zimowy lub na odwrót.

->
Nie wpadłabym na to....
To jak to ominąć? Czy wystarczy zaokrąglić do 0 miejsc po przecinku? Nie będzie błędu obliczeniowego?


Pozdrawiam.

1. a dokładniej chodziło mi, że np.pomiędzy datą 1990-01-1 a datą 1990-01-31 skrypt wyliczył 30 dni a powinno być 31 -licząc włącznie.

(wkradła się literówka)

Pozdrawiam
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.