Rutas
/
C#
C#
/
Ejercicios
/
El salón de belleza se globaliza
El salón de belleza se globaliza

El salón de belleza se globaliza

Ejercicio de aprendizaje

Introducción

Hora

El concepto de hora se trata en .NET con la estructura DateTime. Hay rutinas para convertir entre la hora local y la hora UTC. Se pueden realizar operaciones aritméticas con la ayuda de TimeSpan.

Zona horaria

La clase TimeZoneInfo proporciona rutinas para gestionar las diferencias entre zonas horarias. La clase TimeZoneInfo también contiene métodos que facilitan el tratamiento del horario de verano.

La clase CultureInfo admite formatos de fecha y hora dependientes de la configuración regional.

Para facilitar la programación multiplataforma, la clase RuntimeInformation te permite detectar en qué sistema operativo se está ejecutando tu código: Linux, Windows u OSX.

Instrucciones

En este ejercicio vuelves al mundo de los salones (presentados por primera vez en el ejercicio datetimes). Como en varios de tus proyectos, otro de tus clientes ha tenido un gran éxito y ha abierto sucursales en Londres y París, además de su sede de Nueva York.

1. Proporciona a los administradores equivalentes en hora local de las citas en UTC (tiempo universal coordinado)

Implementa el método estático Appointment.ShowLocalTime(), que recibe una hora UTC y la devuelve como hora local

// For a student in NY
Appointment.ShowLocalTime(new DateTime(2030, 7, 25, 13, 45, 0));
// => {2030, 7, 25, 8, 45, 0}

2. Programa citas en Nueva York, Londres y París

Los salones son responsables de hacer sus propias reservas. La hora introducida es local a la ubicación del salón. Por ejemplo, si alguien introduce una hora de 13:45 para el salón de Nueva York para una cita, esperaría que el cliente apareciera justo después de comer. Del mismo modo, si alguien introdujera una hora de 13:45 para el salón de Londres, también esperaría que el cliente llegara justo después de comer.

Te será útil conocer el identificador de la zona horaria de Nueva York, Londres y París.

En Mac (OSX) y Linux, estos son:

  • Nueva York - America/New_York
  • Londres - Europe/London
  • París - Europe/Paris

En Windows, son:

  • Nueva York - Eastern Standard Time
  • Londres - GMT Standard Time
  • París - W. Europe Standard Time

Implementa la sobrecarga estática Appointment.Schedule(), que recibe una ubicación y una hora como string y devuelve la hora UTC de la cita.

La implementación de Schedule() tendrá que permitir que el código, una vez compilado, se ejecute en Linux, Windows y Mac. Este es el primer ejercicio en el que tienes que preocuparte por el sistema operativo. Será necesario tener rutas de código separadas para adaptarse a la diferencia en los identificadores de zona horaria descritos anteriormente.

Se garantiza que los strings de fecha y hora introducidos son válidos.

Appointment.Schedule("7/25/2030 13:45:00", Location.Paris);
// => {2030, 7, 25, 11, 45, 0}

3. Proporciona alertas a los clientes en intervalos antes de la cita

Implementa el método estático Appointment.GetAlertTime() para proporcionar alertas 1 día (temprana), 1 hora y 45 minutos (estándar) y 30 minutos (tardía) antes de la cita.

Appointment.GetAlertTime(new DateTime(2030, 7, 25, 14, 45, 0), AlertLevel.Early);
// => {2030, 7, 24, 14, 45, 0}

4. Si el horario de verano ha cambiado recientemente, enviamos un mensaje a los clientes para recordárselo.

Implementa el método estático Appointment.HasDaylightSavingChanged() para devolver true si el horario de verano se ha activado o desactivado en los últimos 7 días.

Appointment.HasDaylightSavingChanged(new DateTime(2020, 3, 30, 14, 45, 0), Location.London);
// => true

5. Usa el formato de fecha y hora local para introducir citas

Con el fin de que las citas puedan hacerse en un formato familiar para el personal local, se te ha encargado crear una rutina experimental que permita introducir fechas y horas en el formato predeterminado de la ubicación del salón.

Implementa el método Appointment.NormalizeDateTime(), que recibe un string de fecha y hora bien formado en un formato adecuado a la ubicación y lo convierte en un objeto DateTime. No se intenta convertir la fecha y hora a UTC.

Si se introduce un formato incorrecto, debe devolverse un DateTime con un valor de 1/1/1.

Appointment.NormalizeDateTime("25/11/2019 13:45:00", Location.London);
// => {2019, 11, 25, 13, 45, 0}
Appointment.NormalizeDateTime("25/11/2019 13:45:00", Location.NewYork);
// => {1, 1, 1, 0, 0, 0}
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
C# Exercism

¿Listo para empezar El salón de belleza se globaliza?

Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.