Autor
|
Tema: pero como le asigno un valor monetario a una hora (Leído 6,318 veces)
|
djnilo
Desconectado
Mensajes: 13
|
buenas noches si me puede orientar por favor gracias estoy tratando de hacer una aplicación de un estacionamiento entrada y salida de vehículos por ejemplo un auto llego 12:00 y salio 13:00 = 01:00 estuvo una hora el cobro seria $500 ¿si el vehículo estuvo ejemplo llego 12:00 y salio 12:15 = estuvo 15 minutos pero igual se le cobra los $500? otro ejemplo si el vehiculo llego 12:00 y salio 13:15 = estuvo 01:15 entoces cada 15 minutos depues de la hora deberia cobrarse $150 cada quince minutos después de la hora ¿ pero como le asigno un valor monetario a una hora ? este es mi codigo para sumar las horas Dim fechaini As DateTime Dim fechafin As DateTime DateTime.TryParse(TextBox1.Text, fechaini) ' 12:00 DateTime.TryParse(TextBox2.Text, fechafin) '13:00 Dim dif As TimeSpan = fechafin - fechaini MsgBox("Han transcurridos " & dif.Hours & ":" & dif.Minutes & " hrs.")
|
|
« Última modificación: 5 Febrero 2016, 02:47 am por Eleкtro »
|
En línea
|
|
|
|
XresH
|
Para asignarle podes usar una variable externa, la misma contiene el valor por ejemplo puede ser un array (depende de tu codigo) para mayor control de tiempos y precios. La pregunta que haces de "¿si el vehículo estuvo ejemplo llego 12:00 y salio 12:15 = estuvo 15 minutos pero igual se le cobra los $500?" Eso depende del sistema que vos quieras hacer, si el mismo estacionamiento (al que le haces el sistema) quiere cobrar 15 minutos como 1 hora perfectamente podes, pero sino es asi, podes realizar una simple cuenta, regla de 3, para filtrar y cobrar acorde al tiempo establecido (por ejemplo, media hora, 250) o como te guste.
Saludos.
|
|
|
En línea
|
|
|
|
crack81
Desconectado
Mensajes: 222
|
Creo que tienes un mal enfoque no necesitas asignar un valor monetario a una fecha mira este ejemplo solo basta con hacer unas simple multiplicacion y division Dim fechaini As DateTime Dim fechafin As DateTime Dim cobro As Integer=0 DateTime.TryParse("12:00", fechaini) DateTime.TryParse("12:30", fechafin) Dim dif As TimeSpan = fechafin - fechaini If dif.Hours>=1 Then cobro=cobro+(500*dif.Hours) If dif.Minutes>15 Then Dim n15min As Integer =dif.Minutes\15 cobro =cobro+n15min*150 End If ElseIf dif.Minutes>=1 Then cobro=500 End If Console.WriteLine("Han transcurridos " & dif.Hours & ":" & dif.Minutes & " hrs.") Console.WriteLine("El costo total es de "+Convert.ToString(cobro)) Console.ReadLine()
Si algo anda mal o no es lo que buscas me avisas saludos...
|
|
« Última modificación: 5 Febrero 2016, 03:36 am por crack81 »
|
En línea
|
Si C/C++ es el padre de los lenguajes entonces ASM es dios.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.810
|
Si algo anda mal me avisas Para calcular correctamente la diferencia completa entre dos intervalos de tiempo/fecha siempre se deben usar las propiedades que empiezan con el prefijo Total****, por que las propiedades que NO empiezan por Total**** lo que hacen es devolver el valor relativo al día ( TimeSpan.Days), y esto causaría la obtención de valores incorrectos si intentasemos evaluar lapsos de más de 24 horas. Esto es un ejemplo, fíjate en la diferencia: Dim timeDiff As TimeSpan = (TimeSpan.FromDays(2) - TimeSpan.FromDays(1)) ' 1 día de diferencia inicial. MsgBox(timeDiff.Hours) ' Valor: "0", puesto que es la hora Cero del dia Uno. MsgBox(timeDiff.Add(TimeSpan.FromHours(1)).Hours) ' Valor: "1", puesto que es la hora Uno del dia Uno. MsgBox(timeDiff.TotalHours) ' Valor: "24", puesto que hay 24 horas de diferencia entre día Uno y día Dos. MsgBox(timeDiff.Add(TimeSpan.FromHours(1)).TotalHours) ' Valor: "25", puesto que le añadí 1 hora a las 24 horas de diferencia.
...Esto lo comento por tener en cuenta el supuesto caso en el que el cliente estacionase su vehículo durante más de un día.
Teniendo esta Class para idear y personalizar la lógica de tu algoritmo: Public NotInheritable Class DateUtils ''' <summary> ''' Prevents a default instance of the <see cref="DateUtils"/> class from being created. ''' </summary> <DebuggerNonUserCode> Private Sub New() End Sub <DebuggerStepThrough> Public Shared Function CalculateMoney(ByVal timeIn As TimeSpan, ByVal timeOut As TimeSpan, Optional ByVal x1HourMoney As Double = 500.0F, Optional ByVal x15MinMoneyAfter1Hour As Double = 150.0F) As Double Dim timeDiff As TimeSpan = (timeOut - timeIn) Select Case (timeDiff.TotalMinutes) Case Is <= 0.0R Return 0.0R Case Is <= 60.0R Return (x1HourMoney) Case Else Dim fractions As Double = Math.Ceiling((timeDiff.TotalMinutes - 60.0R) / 15.0R) Dim supplement As Double = (fractions * x15MinMoneyAfter1Hour) Return (x1HourMoney + supplement) End Select End Function <DebuggerStepThrough> Public Shared Function CalculateMoney(ByVal dateIn As Date, ByVal dateOut As Date, Optional ByVal x1HourMoney As Double = 500.0F, Optional ByVal x15MinMoneyAfter1Hour As Double = 150.0F) As Double Return DateUtils.CalculateMoney(TimeSpan.FromTicks(dateIn.Ticks), TimeSpan.FromTicks(dateOut.Ticks), x1HourMoney, x15MinMoneyAfter1Hour) End Function End Class
Puedes utilizarlo de las siguientes maneras (esto son solo unos ejemplos para demostrar los resultados obtenidos) Public NotInheritable Class Form1 : Inherits Form Private Sub Form1_Shown(ByVal sender As Object, ByVal e As EventArgs) _ Handles MyBase.Shown Dim datePairs As New List(Of KeyValuePair(Of Date, Date)) From { New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("12:01")), New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("12:15")), New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("13:00")), New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("13:01")), New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("13:15")), New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("13:30")), New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("13:31")), New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("14:00")) } For Each datePair As KeyValuePair(Of Date, Date) In datePairs Dim sb As New StringBuilder With sb .AppendLine(String.Format("Time In : {0}", datePair.Key.ToString("hh\:mm"))) .AppendLine(String.Format("Time Out : {0}", datePair.Value.ToString("hh\:mm"))) .AppendLine(String.Format("Time Diff: {0}", (datePair.Value - datePair.Key).ToString("%h\h\:%m\m"))) .AppendLine(String.Format(CultureInfo.GetCultureInfo("en-US").NumberFormat, "Payment : ${0:n0}", DateUtils.CalculateMoney(datePair.Key, datePair.Value))) End With Console.WriteLine(sb.ToString) Next End Sub End Class
Private Sub Form1_Shown(ByVal sender As Object, ByVal e As EventArgs) _ Handles MyBase.Shown Dim timePairs As New List(Of KeyValuePair(Of TimeSpan, TimeSpan)) From { New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(12.02)), New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(12.25)), New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(13.0)), New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(13.02)), New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(13.25)), New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(13.5)), New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(13.52)), New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(14.0)) } For Each timePair As KeyValuePair(Of TimeSpan, TimeSpan) In timePairs Dim sb As New StringBuilder With sb .AppendLine(String.Format("Time In : {0}", timePair.Key.ToString("hh\:mm"))) .AppendLine(String.Format("Time Out : {0}", timePair.Value.ToString("hh\:mm"))) .AppendLine(String.Format("Time Diff: {0}", (timePair.Value - timePair.Key).ToString("%h\h\:%m\m"))) .AppendLine(String.Format(CultureInfo.GetCultureInfo("en-US").NumberFormat, "Payment : ${0:n0}", DateUtils.CalculateMoney(timePair.Key, timePair.Value))) End With Console.WriteLine(sb.ToString) Next End Sub End Class
Resultado de ejecución: Time In : 12:00 Time Out : 12:01 Time Diff: 0h:1m Payment : $500
Time In : 12:00 Time Out : 12:15 Time Diff: 0h:15m Payment : $500
Time In : 12:00 Time Out : 13:00 Time Diff: 1h:0m Payment : $500
Time In : 12:00 Time Out : 13:01 Time Diff: 1h:1m Payment : $650
Time In : 12:00 Time Out : 13:15 Time Diff: 1h:15m Payment : $650
Time In : 12:00 Time Out : 13:30 Time Diff: 1h:30m Payment : $800
Time In : 12:00 Time Out : 13:31 Time Diff: 1h:31m Payment : $950
Time In : 12:00 Time Out : 14:00 Time Diff: 2h:0m Payment : $1,100 Saludos
|
|
« Última modificación: 5 Febrero 2016, 04:39 am por Eleкtro »
|
En línea
|
|
|
|
djnilo
Desconectado
Mensajes: 13
|
Creo que tienes un mal enfoque no necesitas asignar un valor monetario a una fecha mira este ejemplo solo basta con hacer unas simple multiplicacion y division Dim fechaini As DateTime Dim fechafin As DateTime Dim cobro As Integer=0 DateTime.TryParse("12:00", fechaini) DateTime.TryParse("12:30", fechafin) Dim dif As TimeSpan = fechafin - fechaini If dif.Hours>=1 Then cobro=cobro+(500*dif.Hours) If dif.Minutes>15 Then Dim n15min As Integer =dif.Minutes\15 cobro =cobro+n15min*150 End If ElseIf dif.Minutes>=1 Then cobro=500 End If Console.WriteLine("Han transcurridos " & dif.Hours & ":" & dif.Minutes & " hrs.") Console.WriteLine("El costo total es de "+Convert.ToString(cobro)) Console.ReadLine()
Si algo anda mal o no es lo que buscas me avisas saludos... muchas gracias crack 81 por responder tan prontamente pero tu codigo lo hice correr no funciona si por ejemplo pongo las 12:00 y salio 13:15 ya deberia combrarme $650 no lo hace pero si le pongo 12:00 y 13:30 cobra 800 eso esta bien
|
|
|
En línea
|
|
|
|
djnilo
Desconectado
Mensajes: 13
|
Para calcular correctamente la diferencia completa entre dos intervalos de tiempo/fecha siempre se deben usar las propiedades que empiezan con el prefijo Total****, por que las propiedades que NO empiezan por Total**** lo que hacen es devolver el valor relativo al día ( TimeSpan.Days), y esto causaría la obtención de valores incorrectos si intentasemos evaluar lapsos de más de 24 horas. Esto es un ejemplo, fíjate en la diferencia: Dim timeDiff As TimeSpan = (TimeSpan.FromDays(2) - TimeSpan.FromDays(1)) ' 1 día de diferencia inicial. MsgBox(timeDiff.Hours) ' Valor: "0", puesto que es la hora Cero del dia Uno. MsgBox(timeDiff.Add(TimeSpan.FromHours(1)).Hours) ' Valor: "1", puesto que es la hora Uno del dia Uno. MsgBox(timeDiff.TotalHours) ' Valor: "24", puesto que hay 24 horas de diferencia entre día Uno y día Dos. MsgBox(timeDiff.Add(TimeSpan.FromHours(1)).TotalHours) ' Valor: "25", puesto que le añadí 1 hora a las 24 horas de diferencia.
...Esto lo comento por tener en cuenta el supuesto caso en el que el cliente estacionase su vehículo durante más de un día.
Teniendo esta Class para idear y personalizar la lógica de tu algoritmo: Public NotInheritable Class DateUtils ''' <summary> ''' Prevents a default instance of the <see cref="DateUtils"/> class from being created. ''' </summary> <DebuggerNonUserCode> Private Sub New() End Sub <DebuggerStepThrough> Public Shared Function CalculateMoney(ByVal timeIn As TimeSpan, ByVal timeOut As TimeSpan, Optional ByVal x1HourMoney As Double = 500.0F, Optional ByVal x15MinMoneyAfter1Hour As Double = 150.0F) As Double Dim timeDiff As TimeSpan = (timeOut - timeIn) Select Case (timeDiff.TotalMinutes) Case Is <= 0.0R Return 0.0R Case Is <= 60.0R Return (x1HourMoney) Case Else Dim fractions As Double = Math.Ceiling((timeDiff.TotalMinutes - 60.0R) / 15.0R) Dim supplement As Double = (fractions * x15MinMoneyAfter1Hour) Return (x1HourMoney + supplement) End Select End Function <DebuggerStepThrough> Public Shared Function CalculateMoney(ByVal dateIn As Date, ByVal dateOut As Date, Optional ByVal x1HourMoney As Double = 500.0F, Optional ByVal x15MinMoneyAfter1Hour As Double = 150.0F) As Double Return DateUtils.CalculateMoney(TimeSpan.FromTicks(dateIn.Ticks), TimeSpan.FromTicks(dateOut.Ticks), x1HourMoney, x15MinMoneyAfter1Hour) End Function End Class
Puedes utilizarlo de las siguientes maneras (esto son solo unos ejemplos para demostrar los resultados obtenidos) Public NotInheritable Class Form1 : Inherits Form Private Sub Form1_Shown(ByVal sender As Object, ByVal e As EventArgs) _ Handles MyBase.Shown Dim datePairs As New List(Of KeyValuePair(Of Date, Date)) From { New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("12:01")), New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("12:15")), New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("13:00")), New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("13:01")), New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("13:15")), New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("13:30")), New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("13:31")), New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("14:00")) } For Each datePair As KeyValuePair(Of Date, Date) In datePairs Dim sb As New StringBuilder With sb .AppendLine(String.Format("Time In : {0}", datePair.Key.ToString("hh\:mm"))) .AppendLine(String.Format("Time Out : {0}", datePair.Value.ToString("hh\:mm"))) .AppendLine(String.Format("Time Diff: {0}", (datePair.Value - datePair.Key).ToString("%h\h\:%m\m"))) .AppendLine(String.Format(CultureInfo.GetCultureInfo("en-US").NumberFormat, "Payment : ${0:n0}", DateUtils.CalculateMoney(datePair.Key, datePair.Value))) End With Console.WriteLine(sb.ToString) Next End Sub End Class
Private Sub Form1_Shown(ByVal sender As Object, ByVal e As EventArgs) _ Handles MyBase.Shown Dim timePairs As New List(Of KeyValuePair(Of TimeSpan, TimeSpan)) From { New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(12.02)), New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(12.25)), New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(13.0)), New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(13.02)), New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(13.25)), New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(13.5)), New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(13.52)), New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(14.0)) } For Each timePair As KeyValuePair(Of TimeSpan, TimeSpan) In timePairs Dim sb As New StringBuilder With sb .AppendLine(String.Format("Time In : {0}", timePair.Key.ToString("hh\:mm"))) .AppendLine(String.Format("Time Out : {0}", timePair.Value.ToString("hh\:mm"))) .AppendLine(String.Format("Time Diff: {0}", (timePair.Value - timePair.Key).ToString("%h\h\:%m\m"))) .AppendLine(String.Format(CultureInfo.GetCultureInfo("en-US").NumberFormat, "Payment : ${0:n0}", DateUtils.CalculateMoney(timePair.Key, timePair.Value))) End With Console.WriteLine(sb.ToString) Next End Sub End Class
Resultado de ejecución: Saludos Muchas gracias por responder Eleкtro se nota que te manejas en el tema pero no entiendo tu codigo para hacerlo correr vb net podrias explicarme por favor soy novato me gusto eso de las 24horas como dices tu si el auto esta estacionado mas tiempo genial la idea esta viendo las salida de tu ejemplo por ejemplo 12:00 salio 13:01 eso es una hora y un minutos tu resultado sale $650 debiria ser $500 pero son 12:00 salio 13:15 eso es una hora y quince minutos deberia cobra $650
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.810
|
no entiendo tu codigo para hacerlo correr vb net podrias explicarme por favor soy novato Los dos ejemplos que puse son funcionales, quiero decir que solo es necesario copiar el código, pegarlo en la class principal (o donde sea), y compilarlo para testearlo. ¿Qué es lo que no entendiste para poder correrlo?.
esta viendo las salida de tu ejemplo por ejemplo 12:00 salio 13:01 eso es una hora y un minutos tu resultado sale $650 debiria ser $500 pero son 12:00 salio 13:15 eso es una hora y quince minutos deberia cobra $650 Entonces el algoritmo que puse debería trabajar en base a 75 minutos, no 60. En la condición del Select Case y la condicional del Case Else debes reemplazar los minuos con los que se trabajan, simplemente reemplaza el valor 60.0R por 74.99R ( 01:14:59 hrs. ). Una vez realizada esa modificación, este es el resultado de ejecución: Time In : 12:00 Time Out : 12:01 Time Diff: 0h:1m Payment : $500
Time In : 12:00 Time Out : 12:15 Time Diff: 0h:15m Payment : $500
Time In : 12:00 Time Out : 13:00 Time Diff: 1h:0m Payment : $500
Time In : 12:00 Time Out : 13:01 Time Diff: 1h:1m Payment : $500
Time In : 12:00 Time Out : 13:14 Time Diff: 1h:14m Payment : $500
Time In : 12:00 Time Out : 13:15 Time Diff: 1h:15m Payment : $650
Time In : 12:00 Time Out : 13:16 Time Diff: 1h:16m Payment : $650
Time In : 12:00 Time Out : 13:29 Time Diff: 1h:29m Payment : $650
Time In : 12:00 Time Out : 13:30 Time Diff: 1h:30m Payment : $800
Time In : 12:00 Time Out : 13:31 Time Diff: 1h:31m Payment : $800
Time In : 12:00 Time Out : 13:44 Time Diff: 1h:44m Payment : $800
Time In : 12:00 Time Out : 13:45 Time Diff: 1h:45m Payment : $950
Time In : 12:00 Time Out : 13:46 Time Diff: 1h:46m Payment : $950
Time In : 12:00 Time Out : 13:59 Time Diff: 1h:59m Payment : $950
Time In : 12:00 Time Out : 14:00 Time Diff: 2h:0m Payment : $1,100 PD: La idea es que en base a ese ejemplo lo personalices por ti mismo para que devuelva los resultados deseados a tu criterio... Saludos
|
|
« Última modificación: 6 Febrero 2016, 11:46 am por Eleкtro »
|
En línea
|
|
|
|
Lekim
Desconectado
Mensajes: 268
|
Hola Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim fechaini As DateTime Dim fechafin As DateTime DateTime.TryParse(TextBox1.Text, fechaini) ' 12:00 DateTime.TryParse(TextBox2.Text, fechafin) '13:00 Dim dif As TimeSpan = fechafin - fechaini Dim Precio As Integer = 0 Dim TotalMinutos As Integer = (dif.Hours * 60 + dif.Minutes) If TotalMinutos < 60 Or TotalMinutos = 60 Then Precio = 500 If TotalMinutos > 60 Then Precio = 500 + (CInt((TotalMinutos - 60) / 15)) * 150 MsgBox(Precio) End Sub End Class
Simplemente he añadido esto a tu código ... Dim Precio As Integer = 0 Dim TotalMinutos As Integer = (dif.Hours * 60 + dif.Minutes) If TotalMinutos < 60 Or TotalMinutos = 60 Then Precio = 500 If TotalMinutos > 60 Then Precio = 500 + (CInt((TotalMinutos - 60) / 15)) * 150 ...
Basándome en lo que ha dicho: por ejemplo un auto llego 12:00 y salio 13:00 = 01:00 estuvo una hora el cobro seria $500
¿si el vehículo estuvo ejemplo llego 12:00 y salio 12:15 = estuvo 15 minutos pero igual se le cobra los $500? Lo que hago es obtener el total de minutos y establezco la condición de que si el total de minutos es menor o igual de 60 (o sea una hora) pues el Precio sea igual a 500. Por otro lado también dices que: entoces cada 15 minutos depues de la hora deberia cobrarse $150 Entonces establezco la condición de que si ha pasado más de una hora es decir más de 60 minutos entonces, resta 60 minutos del total que son los 500 y luego divide el resto por 15 para obtener el número de cuartos de hora. El resultado lo multiplica por 150, ya que como has dicho cada quince minutos después de la hora se multiplica por 150. ( esto me recuerda a los problemas de mates...). Finalmente suma 500 más el producto del total de cuarto de horas por 150. Por ejemplo: De 12:00 a 12:15 ---> es igual a 15 minutos < 60 min. ---> Precio = 500 De 12:00 a 13:00 ---> es igual a 60 minutos = 60 min. ---> Precio = 500 De 12:00 a 13:10 ----> es igual a 70 minutos > 60 min ---> Precio = 500 + CInt((70-60)/15)*150 = 500 ... ya que 70-60 = 10 minutos y CInt(10/15) = 0 cuartos de hora. De 12:00 a 13:30 ---> .... > 60 min. ----> Precio = 500 + CInt((90-60)/15)*150 = 800 ya que 90-60= 30 minutos y CInt(30/15) = 2 cuartos de hora, 2 * 150= 300 y 500 + 300 = 800 (es una versión muy simplificada de la función CalculateMoney de Elektro . Pero que conste que la vi después, eh ) Sl2s
|
|
« Última modificación: 7 Febrero 2016, 08:38 am por Lekim »
|
En línea
|
|
|
|
djnilo
Desconectado
Mensajes: 13
|
Los dos ejemplos que puse son funcionales, quiero decir que solo es necesario copiar el código, pegarlo en la class principal (o donde sea), y compilarlo para testearlo. ¿Qué es lo que no entendiste para poder correrlo?.
Entonces el algoritmo que puse debería trabajar en base a 75 minutos, no 60.
En la condición del Select Case y la condicional del Case Else debes reemplazar los minuos con los que se trabajan, simplemente reemplaza el valor 60.0R por 74.99R ( 01:14:59 hrs. ).
Una vez realizada esa modificación, este es el resultado de ejecución: PD: La idea es que en base a ese ejemplo lo personalices por ti mismo para que devuelva los resultados deseados a tu criterio...
Saludos
muchas gracias por tu paciencia Eleкtro Time In : 12:00 Time Out : 14:00 Time Diff: 2h:0m Payment : $1,100 todavia me sale el mismo error de cobrar $1,100 siendo que son dos horas debería cobrar 12:00 salida 14:00 $ 1,000 y hice las modificacion que dijiste
(es una versión muy simplificada de la función CalculateMoney) Sl2s He revisado tu código Lekim muchas por contestar y por tu tiempo funciona pero tiene un error si la entrada es a las 12:00 y sale 14:15 $ 1250 deberia cobrar 1150 [NOTA DEL MODERADOR] No hagas doble post, utiliza el botón "MODIFICAR".
|
|
« Última modificación: 8 Febrero 2016, 22:57 pm por Eleкtro »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.810
|
Time In : 12:00 Time Out : 14:00 Time Diff: 2h:0m Payment : $1,100 todavia me sale el mismo error de cobrar $1,100 siendo que son dos horas debería cobrar
12:00 salida 14:00 $ 1,000 y hice las modificacion que dijiste
Bueno, eso es otro problema distinto, tu dijiste que a partir de la primera hora se cobrase por cada 15 min, y eso es lo que hace el algoritmo. Para adaptarlo una forma sería dividir los minutos transcurridos entre 60 y así obtener la cantidad de horas, multiplicar esa cantidad por $500, y evaluar los cuartos de hora restantes para añadirle ese "suplemento" adicional a la suma... Al menos muestra un código donde lo intentes hacer por ti mismo. Saludos!
|
|
« Última modificación: 8 Febrero 2016, 22:58 pm por Eleкtro »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
JAVA y MySQL-Llenar un JComboBox con datos textual, pero tomar su valor numérico
Java
|
luisalb
|
3
|
13,999
|
25 Septiembre 2008, 22:05 pm
por juancho77
|
|
|
Cómo asigno el valor de una variable en BACH a una clave de registro SOLUCIONADO
« 1 2 »
Scripting
|
<ИΘZIЭ(ŦB>
|
10
|
8,631
|
18 Agosto 2009, 19:00 pm
por leogtz
|
|
|
Cambiar el Valor de una Variable a una hora concreta
Java
|
thechacal23
|
4
|
3,693
|
3 Enero 2012, 03:47 am
por Proteus1989
|
|
|
Como Obtener valor de un textbox, desde un valor, hasta otro valor [VB6]
Programación Visual Basic
|
revenge1252
|
4
|
6,301
|
17 Julio 2012, 09:38 am
por BlackZeroX
|
|
|
[Ayuda] Consulta MYSQL no coje valor de 1000000 pero si coje 980000
Bases de Datos
|
Graphixx
|
0
|
1,951
|
6 Enero 2013, 05:34 am
por Graphixx
|
|