es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Función JavaScript para 3 husos horarios diferentes

Tengo preguntas sobre mi código de relojes de abajo. ¿Cómo puedo ajustar la función para tres husos horarios diferentes? ¿Debería trabajar con una clase en este caso?

“ `javascript
const secondHand = document.getElementById(“secondhand”);
const minsHand = document.getElementById(“min
hand”);
const hourHand = document.getElementById(“hour_hand”);

función setDate() {
const ahora = nueva fecha();

const segundos = ahora.getSeconds ();
const secondsDegrees = (segundos / 60) * 360 + 90;
secondHand.style.transform = rotar ($ {secondsDegrees} deg);

const minutos = ahora.getMinutes ();
const minsDegrees = (minutos / 60) * 360 + (segundos / 60) * 6 + 90;
minsHand.style.transform = rotar ($ {minsDegrees} deg);

const hora = ahora.getHours ();
const hourDegrees = (hora / 12) * 360 + (minutos / 60) * 30 + 90;
hourHand.style.transform = rotar ($ {hourDegrees} deg);
}
setInterval (setDate, 1000);
setDate ();
“ `

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para ajustar la función para tres diferentes zonas horarias, se puede pasar un parámetro de zona horaria al constructor del objeto Date. Por ejemplo, para obtener la hora actual en Nueva York, se puede usar:

    const now = new Date().toLocaleString("en-US", {timeZone: "America/New_York"});
    

    Para hacer el código más modular y reutilizable, se puede considerar el uso de una clase para encapsular la lógica del reloj. Esto permitiría crear múltiples instancias del reloj con diferentes zonas horarias y configuraciones. Por ejemplo:

    class Clock {
      constructor(timezone, secondHand, minsHand, hourHand) {
        this.timezone = timezone;
        this.secondHand = document.getElementById(secondHand);
        this.minsHand = document.getElementById(minsHand);
        this.hourHand = document.getElementById(hourHand);
      }
    
      update() {
        const now = new Date().toLocaleString("en-US", {timeZone: this.timezone});
    
        const seconds = now.getSeconds();
        const secondsDegrees = (seconds / 60) * 360 + 90; 
        this.secondHand.style.transform = `rotate(${secondsDegrees}deg)`;
    
        const mins = now.getMinutes();
        const minsDegrees = (mins / 60) * 360 + (seconds / 60) * 6 + 90;
        this.minsHand.style.transform = `rotate(${minsDegrees}deg)`;
    
        const hour = now.getHours();
        const hourDegrees = (hour / 12) * 360 + (mins / 60) * 30 + 90;
        this.hourHand.style.transform = `rotate(${hourDegrees}deg)`;
      }
    
      start() {
        setInterval(() => {
          this.update();
        }, 1000);
        this.update();
      }
    }
    
    const nyClock = new Clock("America/New_York", "second_hand_ny", "min_hand_ny", "hour_hand_ny");
    nyClock.start();
    
    const londonClock = new Clock("Europe/London", "second_hand_london", "min_hand_london", "hour_hand_london");
    londonClock.start();
    
    const tokyoClock = new Clock("Asia/Tokyo", "second_hand_tokyo", "min_hand_tokyo", "hour_hand_tokyo");
    tokyoClock.start();
    

    En este ejemplo, definimos una clase Clock que toma una zona horaria y los IDs de las manecillas del reloj como argumentos. El método update calcula los ángulos de las manecillas basándose en la hora actual en la zona horaria especificada. El método start inicia el reloj llamando al método update cada segundo usando setInterval. Creamos tres instancias de la clase Clock con diferentes zonas horarias e IDs para las manecillas del reloj, y las iniciamos todas usando el método start.

Comments are closed.