Newsgroup: it.comp.www.asp
Titolo: funzioni con date

Salve a tutti,
ho un caso da sottoporre al NG:
avendo una data fattura, supponiamo 17/06/01, e la scadenza e' fissata a 60
giorni data fattura fine mese.
Sapete dirmi come faccio a far risultare come scadenza 31/08/01?
Io ho provato ad aggiungere 60 giorni alla data della fattura ma ovviamente
mi da 16/08/01; come faccio ad aggiungere "n" giorni per arrivare a portare
la scadenza a fine mese, ossia 31/08/01?
Esiste una qualche funzione oppure qualcuno e' incappato in questioni come
questa? So che con le nuove 
ASP.NET
 c'e' la funzione LASTDAYOFMOUNTH o roba
simile ma qui sto parlando ancora delle vecchie ASP 2.0
Qualcuno sa darmi una risposta oppure una dritta su dove cercare in rete?
Grazie
Gio(vanni)


Moderatore di it.comp.www.asp
Sito di supporto: 
http://www.aspitalia.com/newsgroup/
La piů grande community italiana di sviluppatori!

 ci sia un "m", che specifica il numero di mesi. altra via è
In effetti c'e' solo che se faccio dateadd("m",2,datafattura) dove 2 sta per
2 mesi mi ritorna 17/08/01 perche' non so come fare ad arrivare al 31/08/01
.... mi mancano 14 giorni :-)
Cmq grazie
Gio(vanni)

Ci sono arrivato facendo qualche giro un po' largo ma alla fine... ecco il
risultato:
supposto che la data fattura sia: 17/06/01
ecco lo script:
<p>data fattura: 17/06/01 <%data = cdate("17/06/01")
nuovadata=DateAdd("m", 2, data)
mese = datepart("m",nuovadata)
select case(mese)
case(1)
ultimogiorno = "31/01/01"
case(2)
ultimogiorno = "28/02/01"
case(3)
ultimogiorno = "31/03/01"
case(4)
ultimogiorno = "30/04/01"
case(5)
ultimogiorno = "31/05/01"
case(6)
ultimogiorno = "30/06/01"
case(7)
ultimogiorno = "31/07/01"
case(8)
ultimogiorno = "31/08/01"
case(9)
ultimogiorno = "30/09/01"
case(10)
ultimogiorno = "31/10/01"
case(11)
ultimogiorno = "30/11/01"
case(12)
ultimogiorno = "31/12/01"
end select
giorni=DateDiff("d", nuovadata, ultimogiorno)%><br>
  volendo avere come scadenza 2 mesi data fattura fine mese otterro':<br>
  data scadenza: <%=dateadd("d",giorni,nuovadata)%>
</p>
....lo so devo rifinirlo meglio ma per il momento e' quello che volevo.
Grazie a tutti comunque, in particolare a Daniele
Gio(vanni)


30 giorni a Novembre con April, Giugno e Settembre;
di 28 ce nè uno;
tutti gli altri ne han 31
<%
' Separa la data
Giorno = Day(datafattura)
Mese = Month(datafattura)
Anno = Year(datafattura)
Giorni_Feb = DateDiff("d", "01/02/" & Anno, "01/03/" & Anno)
Dim GG_Mese(12)
For f = 1 to 12
  Select Case f
    Case 1, 3, 5, 7, 8, 10, 12
      GG_Mese(f) = 31
    Case 4, 6, 9, 11
      GG_Mese(f) = 30
    Case 2
      GG_Mese(f) = Giorni_Feb
  End Select
Next
Add_Mesi = 2
Mese_Scad = Mese + Add_Mesi
If Mese_Scad <= 12 then
  Giorno_Scad = GG_Mese(Mese_Scad)
  Anno_Scad = Anno
Else
  Mese_Scad = Int(Mese_Scad mod 12)
  Anno_Scad = Anno + 1
  ' Ricalcolo giorni febraio (se necessario)
  If Mese_Scad <> 2 then
    Giorno_Scad = GG_Mese(Mese_Scad)
  Else
    GG_Mese(2) = DateDiff("d", "01/02/" & Anno_Scad, "01/03/" &
Anno_Scad)
    Giorno_Scad = GG_Mese(2)
  End If
End If
Data_Scadenza = Giorno_Scad & "/" & Mese_Scad & "/" & Anno_Scad
%>
Forse un pò prolisso e macchinoso ... ma almeno posso arrivare sino ai
11 mesi di scadenza ... e chi mai fa una fattura con scadenza a 11
mesi dalla sua emissione?
Mariotti Michele

Se ho capito bene il problema, lo puoi risolvere direttamente con la
funzione sotto indicata:
Non lo commento, dovrebbe essere abbastanza chiaro.
Y&M
<%
response.write  LastDayOfMonth( "17/06/2001",  2)
function LastDayOfMonth (curDate, months)
    newDate = DateAdd("m", months+1 , CDate(curDate))
    LastDayOfMonth= DateAdd("d", -1, DateSerial( Year(newDate),
Month(newDate) ,1))
end function
%>

ci sia un "m", che specifica il numero di mesi. altra via è quella di
dici bene.
per avere l'ultimo del mese del mese corrente io faccio proprio così,
cioè aggiungo un mese alla data, setto il giorno del mese a 1 e poi
levo un giorno (scrivo in modo ridondante per maggiore chiarezza nei
passaggi):
function fUltimoDelMese(d)
' d è la data da cui ricavare l'ultimo del mese
dim appo
	appo = dateadd("m", 1, d)
	appo = year(appo) & "/" & month(appo) & "/01"
	' scrivo la data nel formato aaaa/mm/gg per evitare
	' problemi di formattazione all'inglese
	appo = dateadd("d", -1, appo)
	fUltimoDelMese = appo
end function
sicché il caso del 60 gg da fine mese diventa:
function f60ggDaFineMese(d)
	dim appo
	appo = fUltimoDelMese(d)
	appo = dateadd("d", 60, appo)
	f60ggDaFineMese = appo
end function
a questo punto però mi domando una cosa (non sono pratico di questioni
commerciali).  vendo qualcosa a giugno, 60 gg dal 30 giugno è il 30
agosto, va bene se il cliente me la paga a fine agosto, cioè al 31
agosto o deve pagare il 30 agosto?
oppure: vendo qualcosa in luglio, il cliente deve pagare il 30
settembre o il primo ottobre?
in sostanza, si tratta proprio di 60 giorni oppure due mesi, che non è
la stessa cosa?
--
non studio non lavoro non guardo la tv
non vado al cinema non faccio sport

 la stessa cosa?
in genere si dice 60 giorni, ma si fa riferimento cmq all'ultimo giorno del
mese.
(per questo io consiglio di aggiungere 2 mesi e non 60 gg)
