Newsgroup: it.comp.lang.javascript
Titolo: Aiuto per un medico

Salve a tutti
Assolutamente profano di scripts devo implementare una funzione che calcoli
quante settimane sono trascorse da una determinata data che l'utente deve
iserire in un campo di testo nella forma gg/mm/aaaa.
Inoltre deve generare un messaggio di avviso se le settimane trascorse sono
meno di cinque o più di quarantadue.
Il tutto serve per calcolare la durata della gravidanza.
Un grazie enorme a chi vorrà rispondere.
docnelli

...

prova così:
<head>
<script language="JavaScript">
function CalcolaSettimana() {
 var giorno=document.nomeform.data.value.substr(0,2);
 var mese=document.nomeform.data.value.substr(3,2);
 var anno=document.nomeform.data.value.substr(6,4);
 data = new Date(anno,mese,giorno);
 inizioanno = new Date(anno,01,01);
 nsettimane = ((data.getTime()-inizioanno.getTime()) / 1000 / 60 / 60
/ 24 / 7);
 nsettimane = Math.round(nsettimane);
 if (nsettimane<5 || nsettimane>42) alert("Avviso.");
}
</script>
</head>
<body>
<form name="nomeform">
  <p> 
    <input name="data" type="text" id="data" size="10" maxlength="10">
    <input type="button" name="Submit" value="Calcola"
onClick="CalcolaSettimana();">
  </p>
</form>
ciao

 Un grazie enorme a chi vorrà rispondere.
il problema è che nessuno paga, ma le tariffe sono esposte da tempo :)
http://www.casagit.it/Tariffario/tariffario11_012.htm

 ha scritto nel messaggio
news:aBd0b.250090$lK4.7...@twister1.libero.it...


Ricordavo di aver aperto un thread a proposito qualche mese fa; ho fatto una
ricerca e ho trovato questo:
http://makeashorterlink.com/?D156322A5
dove se ne è parlato abbondantemente...
Non lo ho riletto tutto ma penso ci siano varie function segnalate per
questo calcolo

...e che non c'azzecca nulla, visto che parla di numero di settimana
dell'anno e non di distanza tra settimane...
"Pensare e leggere prima di scrivere no???" (mi cazzio da solo)
Ti dň una veloce dritta:
 Data una data data1 e la data di oggi data2=new Date();
 se fai data2.getTime()-data1.getTime() ottieni i millisecondi di differenza
tra le 2 date; fai un calcolo di quanti millisecondi ci sono in una
settimana, dividi per il numero ottenuto (potrebbe essere 604800000)  e il
gioco č (piů o meno) fatto
L'unico problema che puoi trovare č il formato fornito per la data di
concepimento, devi essere certo che sia fornita nel formato gg/mm/yyyy e da
qui ricavare una data javascript valida; se non riesci facci sapere.

 Il tutto serve per calcolare la durata della gravidanza.
Guarda, sono appena tornato dalle ferie.. e mi servirebbero altre ferie 
per riprendermi da queste.. quindi sono un po' fusetto, e lo script che 
ti posto non e' davvero il massimo dell'eleganza, ma prova un po':
<script type="text/javascript">
	var _constMSecDay=86400000;
 
	function pregnancy(userDate){
		userDate=userDate.split("/");
		this.userDate=new Date(userDate[2],userDate[1]-1,userDate
[0]);
		this.today=new Date();
		this.elapsedDays=this.today-this.userDate;		
		this.elapsedWeeks=0;
		this.offsetDays=0;
		this.errOut="";
 
		this.check=function(){
			if (this.elapsedDays<0){
				this.errOut="La data inputata risulta 
maggiore di quella attuale.";
				return false;
			}
			this.elapsedDays=this.elapsedDays/_constMSecDay >> 
0;
			this.elapsedWeeks=this.elapsedDays / 7 >>0;
			this.offsetDays=7-(this.elapsedDays % 7);
 
			if (this.elapsedWeeks < 5){
				this.errOut="Non sono ancora passate 5 
settimane."
				return false;
			}else if (this.elapsedWeeks > 42){
				this.errOut="Sono già passati 6 mesi, dovevi 
svegliarti prima, ciccia!";
				return false;
			}
 
			return true;
		}
 
		return this;
	}
	/* esempio di utilizzo */
	var myMedicalControl=new pregnancy("11/8/2003");
 
	if (myMedicalControl.check()){
		alert("Sono passate "+myMedicalControl.elapsedWeeks+
				" settimane 
("+myMedicalControl.elapsedDays+" giorni, 
"+myMedicalControl.offsetDays+ " allo scattare della settimana 
successiva).");
	}else{
		alert("Errore:" + myMedicalControl.errOut)
	}
</script>
Ricorda di allineare le stringhe il codice finito a capo nel messaggio 
(es. le stringhe).
Nell'esempio viene inserita una stringa da codice (11/8/2003) ma nulla 
vieta che prenda il valore di un campo di testo o altro.
Ad esempio, con una form del tipo:
<form name="myform">
	<input type="text" value="" name="txtDate" />
</form>
Si avrebbe:
var myMedicalControl=new pregnancy(document.forms[0].txtDate.value);
Attento che l'oggetto in questione (pregnancy) non fa un controllo 
sulla validita' o meno della data inserita dall'utente, quello e' un 
altro tipo di controllo da fare a "monte". Lui si aspetta una data 
valida nel formato giorno/mese/anno.
Se c'e' qualcosa che non funziona, ho hai qualche dubbio, fischietta.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)