Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

306
Visualizações
Cómo obtener una subcadena de una lista de elementos y asignar un valor de subcadena al mismo elemento en C#
Hora de inicio ID de agente
19/08/2021 07:04:56 a. m. UTC 33
11/08/2021 14:58:35 CST 42
12/08/2021 01:01:51 CST 24
12/08/2021 08:52:34 p. m. UTC 61
 public class MyModel { public string StartTime { get; set; } public int AgentId { get; set; } public string TimeZone { get; set; } public string Time { get; set; } }

Tengo el modelo de clase C# MyModel y sus datos de muestra almacenados como List<MyModel> en mi lógica. Necesito ayuda para analizar el campo StartTime de inicio de una lista de modo que el campo TimeZone horaria obtenga el UTC/CST/IST de su Hora de StartTime correspondiente y el campo Time de una lista debe tener una marca de tiempo de su StartTime de inicio, es decir: 07:04:56 o 02:58:35 y así sucesivamente. Finalmente, la lista debería parecerse a algo como a continuación:

Hora de inicio ID de agente Hora Zona horaria
19/08/2021 07:04:56 a. m. UTC 33 07:04:56 a. m. UTC
11/08/2021 14:58:35 CST 42 14:58:35 IST
12/08/2021 01:01:51 CST 24 01:01:51 a. m. CST
12/08/2021 08:52:34 p. m. UTC 61 20:52:34 UTC
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Dado el hecho de que todos los segmentos en su propiedad StartTime tienen una cantidad forzada de caracteres gracias al formato de cadena que ha elegido (excepto la zona horaria donde podríamos tener, por ejemplo, CEST, pero no tenemos que preocuparnos por eso y yo llegaremos al por qué en solo un segundo) podemos simplemente usar el método String.Substring y para el primer parámetro, definir el carácter desde donde debe comenzar a leerse la nueva cadena que se va a generar y como segundo parámetro, la cantidad de caracteres debe leer de allí en adelante. Si no configuramos el segundo parámetro, el método String.Substring simplemente leerá la cadena hasta el final y dado que la zona horaria es el último segmento del formato StartTime , la cantidad desconocida de caracteres para la zona horaria no es un problema para nosotros.

Con eso en mente, aquí hay algunas opciones que puede elegir:

Si no desea ajustar su clase:

 private void ManageMyModels(List<MyModel> models) { models.ForEach(model => { model.TimeZone = model.StartTime.Substring(23); model.Time = model.StartTime.Substring(11, 11); }); }

Esta solución es bastante simple, ya que itera sobre cada elemento de MyModel y establece los valores de las propiedades TimeZone y Time de acuerdo con el valor de StartTime . Sin embargo, sería mucho mejor si no tuviéramos que hacer esto manualmente para cada modelo que creamos, así que aquí hay una mejor solución si no te importa ajustar tu clase :

 public class MyModel { public string StartTime { get; set; } public int AgentId { get; set; } public string TimeZone => this.StartTime.Substring(23); public string Time => this.StartTime.Substring(11, 11); }

La forma en que funciona esta solución es que cada vez que acceda a la propiedad TimeZone o Time , su código asignado se ejecutará devolviendo la subcadena que necesita. En cuanto al rendimiento, habría una desventaja en la que el código se ejecutaría cada vez que llame a cualquiera de las propiedades, incluso cuando el valor de StartTime no haya cambiado.

Alternativamente, podría hacerlo al revés, donde cada vez que pase un nuevo valor a StartTime, ambas propiedades también se actualizarían:

 public class MyModel { private string _startTime; public string StartTime { get => _startTime; set { this._startTime = value; this.TimeZone = value.Substring(23); this.Time = value.Substring(11, 11); } } public int AgentId { get; set; } public string TimeZone { get; private set; } public string Time { get; private set; } }

Esto elimina la desventaja mencionada anteriormente, pero crea una nueva en la que la propiedad TimeZone y Time siempre se actualizarán cada vez que se actualice la propiedad StartTime, incluso si no la usaría.

Personalmente, me quedaría con la opción anterior simplemente porque es más corta y fácil de leer.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda