Avatar billede bamzen Nybegynder
22. juli 2002 - 12:20 Der er 1 kommentar og
1 løsning

Dato kalkulerings haj!, den her er til dig

i en form har jeg to kalendre og to tilhørende ure, samt et resultat felt...

I mine dato felter angiver jeg datoen i formatet mm/dd/yyyy og i urene tt:mm

Så ville jeg gerne at den regnede antal dage, timer, min ud som der er difference...

Samtidig vil jeg også gerne at  man kan lade enten fra dato/tid være tomt, og så kun indtaste til dato/tidspunkt samt antal dage, hvorefter den så beregner fra dato (bare med samme tid, da antal dage ville blive indtastet som heltal)

Samtidig vil jeg gerne kunne udfylde til dato/tid baseret på fra dato/tid samt antal dage

Comprende??

Anyone in for the challenge?
Avatar billede jakoba Nybegynder
22. juli 2002 - 12:54 #1
fradag _____________  fratid _________      start tidspunkt
tildag _____________  tiltid _________      slut tidspunkt
difdag _____________  diftid _________      varighed

det format du angiver er fint til datoer, men du får nok svært ved at få en bruger til at indtaste:
      00/14/0000            04:00
hvis han ønsker at leje en båd i 14 dage og 4 timer. Det er kun programmører der kan se nogen logik i det.

Prøv at lave en meget klar beskrivelse for dig selv (og for os) om hvordan brugerfladen skal se ud. hvilke felter der skal være. og hvordan du vil gelejde brugeren til at udfylde korrekt. fx, hvad hvis han/hun prøver at udfylde både tildag og difdag? eller udfylder difdag og tiltid (vi KAN så udfylde resten, men skal vi?)

mvh JakobA
Avatar billede bamzen Nybegynder
06. september 2002 - 10:04 #2
Jeg skrev denne løsning på problemet

Her er der tre sæt felter

1 = fra dato/tid
2 = til dato
3 = beregn dato ud fra antal uger/dage/timer/minutter

Da der er to forskellige måder den kan regne på, har jeg lavet en onFocu der sætter en variabel, der fortæller hvilken metode den skal bruge til udregningen.....

Her efter er det såmænd bare at regne den ud... ;-)

<HTML>
<HEAD>
<SCRIPT LANGUAGE=JavaScript>

var fromDate
var toDate
minute = 60000
hour = minute * 60
aday = hour * 24
week = aday * 7
calctype = 1

function checkD(var1,var2){

}


function doCalc(){
f = document.calcDateForm
fromDate = new Date(f.fromYYYY.value,f.fromMM.value-1,f.fromDD.value,f.fromHH.value,f.fromSS.value,00)
fromDate = fromDate.getTime()


if(calctype==1){

toDate = new Date(f.toYYYY.value,f.toMM.value-1,f.toDD.value,f.toHH.value,f.toSS.value,00)
toDate = toDate.getTime()
getTimeDiff = toDate - fromDate
amountOfDays = Math.floor(getTimeDiff/aday)
amountOfHours = Math.floor((getTimeDiff-(amountOfDays*aday))/hour)
amountOfMinutes = Math.floor((getTimeDiff-((amountOfDays*aday)+(amountOfHours*hour)))/minute)
daysT = (amountOfDays!=1)?"days":"day"
hoursT = (amountOfHours!=1)?"hours":"hour"
minutesT= (amountOfMinutes!=1)?"minutes":"minute"

document.getElementById("result").innerHTML = amountOfDays + " "+daysT+", " + amountOfHours + " "+hoursT+", "+amountOfMinutes+" "+minutesT

}else{
addAmount = (f.addWeeks.value*week)+(f.addDays.value*aday)+(f.addHours.value*hour)+(f.addMinutes.value*minute)
getTimeDiff = fromDate + addAmount
amountOfDays = Math.floor(getTimeDiff/aday)
amountOfHours = Math.floor((getTimeDiff-(amountOfDays*aday))/hour)
amountOfMinutes = Math.floor((getTimeDiff-((amountOfDays*aday)+(amountOfHours*hour)))/minute)
daysT = (amountOfDays!=1)?"days":"day"
hoursT = (amountOfHours!=1)?"hours":"hour"
minutesT= (amountOfMinutes!=1)?"minutes":"minute"
newDate = new Date()
newDate.setTime(getTimeDiff)
theYear = (newDate.getYear()<=2001)?newDate.getYear()+1900:newDate.getYear();

document.getElementById("result").innerHTML = newDate.getDate() + "/"+ (newDate.getMonth()+1) + "/"+theYear+" - " + newDate.getHours() + ":" + newDate.getMinutes()

}

}

</SCRIPT>
<STYLE TYPE=TEXT/CSS>
BODY,TD,DIV{background-color:#FFFFFF;layer-background-color:#FFFFFF;font-family:verdana,helvetica,arial;font-size:10px;color:#003366}
INPUT{border: 1px solid #CC3333;font-size:10px;height:15px}
.dateTable{border:1px solid #003366}
.fromDate,toDate{background-color:#003366;layer-background-color:#003366;color:#FFFFFF;font-weight:bold}
.tableCell{padding:2px}
.calculate{background-color:#FFFFFF;layer-background-color:#FFFFFF;font-weight:bold;color:#CC3333}
.calcHeader{background-color:#003366;layer-background-color:#003366;color:#FFFFFF;font-weight:bold;font-size:18px}
</STYLE>
</HEAD>
<BODY onLoad=document.forms[0].fromDD.focus()>
<FORM NAME=calcDateForm>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=10 CLASS=dateTable WIDTH=100% HEIGHT=100%>
<TR><TD CLASS=calcHeader>TORM Days calculator</TD></TR>
<TR><TD HEIGHT=100% VALIGN=TOP>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=450>
<TR><TD>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=100% CLASS=dateTable>
<TR><TD COLSPAN=10 class=fromDate>From date</TD></TR>
<TR><TD CLASS=tableCell ALIGN=CENTER>DD</TD><TD CLASS=tableCell ALIGN=CENTER></TD><TD CLASS=tableCell ALIGN=CENTER>MM</TD><TD CLASS=tableCell ALIGN=CENTER></TD><TD CLASS=tableCell ALIGN=CENTER>YYYY</TD><TD CLASS=tableCell ALIGN=CENTER></TD><TD CLASS=tableCell ALIGN=CENTER>HH</TD><TD CLASS=tableCell ALIGN=CENTER>  </TD><TD CLASS=tableCell ALIGN=CENTER>MM</TD></TR>
<TR><TD CLASS=tableCell><INPUT TYPE=TEXT NAME=fromDD SIZE=2 MAXLENGTH=2 onKeyUp="checkD(this.value,31)"></TD><TD CLASS=tableCell>/</TD><TD CLASS=tableCell><INPUT TYPE=TEXT NAME=fromMM SIZE=2 MAXLENGTH=2></TD><TD CLASS=tableCell>/</TD><TD CLASS=tableCell><INPUT TYPE=TEXT NAME=fromYYYY SIZE=4 MAXLENGTH=4></TD><TD CLASS=tableCell> </TD><TD CLASS=tableCell><INPUT TYPE=TEXT NAME=fromHH SIZE=2 MAXLENGTH=2></TD><TD CLASS=tableCell> : </TD><TD CLASS=tableCell><INPUT TYPE=TEXT NAME=fromSS SIZE=2 MAXLENGTH=2></TD></TR>
</TABLE></TD><TD ROWSPAN=7>&nbsp;&nbsp;&nbsp;</TD><TD ROWSPAN=5 VALIGN=TOP>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=230 CLASS=dateTable>
<TR><TD COLSPAN=10 class=fromDate>Result</TD></TR>
<TR><TD HEIGHT=163 VALIGN=TOP><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2><TR><TD><SPAN ID=result></SPAN></TABLE></TD></TR>
</TABLE>
</TD></TR>
<TR><TD><BR></TD></TR>
<TR><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=100% CLASS=dateTable>
<TR><TD COLSPAN=10 class=fromDate>To date ...</TD></TR>
<TR><TD CLASS=tableCell ALIGN=CENTER>DD</TD><TD CLASS=tableCell ALIGN=CENTER></TD><TD CLASS=tableCell ALIGN=CENTER>MM</TD><TD CLASS=tableCell ALIGN=CENTER></TD><TD CLASS=tableCell ALIGN=CENTER>YYYY</TD><TD CLASS=tableCell ALIGN=CENTER> </TD><TD CLASS=tableCell ALIGN=CENTER>HH</TD><TD CLASS=tableCell ALIGN=CENTER>  </TD><TD CLASS=tableCell ALIGN=CENTER>MM</TD></TR>
<TR><TD CLASS=tableCell><INPUT TYPE=TEXT NAME=toDD SIZE=2 MAXLENGTH=2 onFocus="calctype=1"></TD><TD CLASS=tableCell>/</TD><TD CLASS=tableCell><INPUT TYPE=TEXT NAME=toMM SIZE=2 MAXLENGTH=2 onFocus="calctype=1"></TD><TD CLASS=tableCell>/</TD><TD CLASS=tableCell><INPUT TYPE=TEXT NAME=toYYYY SIZE=4 MAXLENGTH=4 onFocus="calctype=1"></TD><TD CLASS=tableCell> </TD><TD CLASS=tableCell><INPUT TYPE=TEXT NAME=toHH SIZE=2 MAXLENGTH=2 onFocus="calctype=1"></TD><TD CLASS=tableCell> : </TD><TD CLASS=tableCell><INPUT TYPE=TEXT NAME=toSS SIZE=2 MAXLENGTH=2 onFocus="calctype=1"></TD></TR>
</TABLE></TD></TR>
<TR><TD><BR></TD></TR>
<TR><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=100% CLASS=dateTable>
<TR><TD COLSPAN=10 class=fromDate>... or from date plus amount of time</TD></TR>
<TR>
    <TD CLASS=tableCell ALIGN=CENTER>Weeks</TD>
    <TD CLASS=tableCell ALIGN=CENTER></TD>
    <TD CLASS=tableCell ALIGN=CENTER>Days</TD>
    <TD CLASS=tableCell ALIGN=CENTER> </TD>
    <TD CLASS=tableCell ALIGN=CENTER>HH</TD>
    <TD CLASS=tableCell ALIGN=CENTER>  </TD>
    <TD CLASS=tableCell ALIGN=CENTER>MM</TD>
    <TD WIDTH=50>&nbsp;</TD>
</TR>
<TR>
    <TD CLASS=tableCell><INPUT TYPE=TEXT NAME=addWeeks SIZE=2 MAXLENGTH=2 onFocus="calctype=2"></TD>
    <TD CLASS=tableCell></TD>
    <TD CLASS=tableCell><INPUT TYPE=TEXT NAME=addDays SIZE=2 MAXLENGTH=2 onFocus="calctype=2"></TD>
    <TD CLASS=tableCell> </TD>
    <TD CLASS=tableCell><INPUT TYPE=TEXT NAME=addHours SIZE=2 MAXLENGTH=2 onFocus="calctype=2"></TD>
    <TD CLASS=tableCell> : </TD>
    <TD CLASS=tableCell><INPUT TYPE=TEXT NAME=addMinutes SIZE=2 MAXLENGTH=2 onFocus="calctype=2"></TD>
    <TD WIDTH=50>&nbsp;</TD>
</TR>
</TABLE></TD></TR>
<TR><TD><BR></TD></TR>
<TR><TD>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=100%>
<TR><TD COLSPAN=10 ALIGN=RIGHT><INPUT TYPE=BUTTON NAME=Calc VALUE="Calculate" Class=calculate onClick="doCalc();return false"></TD></TR>
</TABLE>
</TABLE></TD></TR></TABLE>
</FORM>

</BODY>
</HTML>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester