c# - maskedtextbox1 - maskedtextbox visual studio 2017
Convertir la diferencia entre 2 veces en milisegundos? (11)
Debe convertir los valores del cuadro de texto a DateTime (t1, t2), luego:
DateTime t1,t2;
t1 = DateTime.Parse(textbox1.Text);
t2 = DateTime.Parse(textbox2.Text);
int diff = ((TimeSpan)(t2 - t1)).TotalMilliseconds;
O use DateTime.TryParse (textbox1, out t1); El manejo de errores depende de usted.
Tengo dos controles TextBox enmascarados y me preguntaba cómo haría para obtener el tiempo en cada uno y luego convertir la diferencia en milisegundos. Como, digamos en tb1 escribo "12:01" y en tb2 escribo "12:02", y luego hago clic en un botón. Una vez que se presiona el botón, se inicia un temporizador y a las 12:02 se mostrará un cuadro de mensaje. Sé cómo hacer todo excepto la parte de conversión de tiempo.
¿Cómo puede lograrse?
Muchas de las soluciones mencionadas anteriormente pueden adaptarse a diferentes personas.
Me gustaría sugerir un código ligeramente modificado que la solución más aceptada por "MusiGenesis".
DateTime firstTime = DateTime.Parse( TextBox1.Text );
DateTime secondTime = DateTime.Parse( TextBox2.Text );
double milDiff = secondTime.Subtract(firstTime).TotalMilliseconds;
Consideraciones :
- earlierTime.Subtract(laterTime)
obtendrás un valor negativo.
- use int milDiff = (int)DateTime.Now.Subtract(StartTime).TotalMilliseconds;
si necesita valor entero en lugar de doble
- Se puede usar el mismo código para obtener la diferencia entre dos valores de Fecha y puede obtener .TotalDays
o .TotalHours
insteaf de .TotalMilliseconds
Para responder la pregunta del título:
DateTime d1 = ...;
DateTime d2 = ...;
TimeSpan diff = d2 - d1;
int millisceonds = (int) diff.TotalMilliseconds;
Puede usar esto para configurar un temporizador:
timer1.interval = millisceonds;
timer1.Enabled = true;
No olvide deshabilitar el temporizador cuando maneje el tic.
Pero si quieres un evento a las 12:03, simplemente sustituye DateTime.Now para d1
.
Pero no está claro cuál es la función exacta de textBox1 y textBox2.
Pruebe lo siguiente:
DateTime dtStart;
DateTime dtEnd;
if (DateTime.TryParse( tb1.Text, out dtStart ) && DateTime.TryParse(tb2.Text, out dtEnd ))
{
TimeSpan ts = dtStart - dtEnd;
double difference = ts.TotalMilliseconds;
}
Si solo desea mostrar un cuadro de mensaje a las 12:02, use un control de temporizador con una demora de, digamos, 250 ms, que siga comprobando si la hora actual es 12:02. Cuando lo es, muestre el mensaje y detenga el temporizador. Tenga en cuenta que esto no requiere un campo de hora de inicio (aunque puede que lo esté utilizando para otra cosa, no lo sé), en cuyo caso el otro código que se le proporcionó aquí será útil).
Si solo está lidiando con Times y sin fechas, querrá lidiar con TimeSpan y manejar el cruce a medianoche.
TimeSpan time1 = ...; // assume TimeOfDay
TimeSpan time2 = ...; // assume TimeOfDay
TimeSpan diffTime = time2 - time1;
if (time2 < time1) // crosses over midnight
diffTime += TimeSpan.FromTicks(TimeSpan.TicksPerDay);
int totalMilliSeconds = (int)diffTime.TotalMilliseconds;
Tratar:
DateTime first;
DateTime second;
int milliSeconds = (int)((TimeSpan)(second - first)).TotalMilliseconds;
VB.net, aplicación de escritorio. Si necesita tiempo transcurrido en milisegundos:
Dim starts As Integer = My.Computer.Clock.TickCount
Dim ends As Integer = My.Computer.Clock.TickCount
Dim lapsed As Integer = ends - starts
public static Int64 GetDifferencesBetweenTwoDate(DateTime newDate, DateTime oldDate, string type)
{
var span = newDate - oldDate;
switch (type)
{
case "tt": return (int)span.Ticks;
case "ms": return (int)span.TotalMilliseconds;
case "ss": return (int)span.TotalSeconds;
case "mm": return (int)span.TotalMinutes;
case "hh": return (int)span.TotalHours;
case "dd": return (int)span.TotalDays;
}
return 0;
}
DateTime dt1 = DateTime.Parse(maskedTextBox1.Text);
DateTime dt2 = DateTime.Parse(maskedTextBox2.Text);
TimeSpan span = dt2 - dt1;
int ms = (int)span.TotalMilliseconds;
var firstTime = DateTime.Now;
var secondTime = DateTime.Now.AddMilliseconds(600);
var diff = secondTime.Subtract(firstTime).Milliseconds;
// var diff = DateTime.Now.AddMilliseconds(600).Subtract(DateTime.Now).Milliseconds;