Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

288
Vistas
Diferencia entre dos tiempos en segundos en carbono según la zona horaria

Quiero averiguar la diferencia entre 2 veces para la zona horaria diferente. Mi servidor está basado en Sydney y quiero encontrar la diferencia entre la hora dada y la hora actual (basada en Perth) en segundos

 echo $tz = Carbon::now('Australia/Perth'); echo "<br>"; $local='2017-04-11 12:39:50'; echo $emitted = Carbon::parse($local); echo "<br>"; echo "diff from carbon->"; echo $diff = $tz->diffInSeconds($emitted); echo "<br> diff from Normal->"; echo $diff1 = strtotime($tz) - strtotime($emitted);

Cuando usé diffInSeconds , dio una diferencia de 2 horas y parece que la localización no se tiene en cuenta, pero strtotime($tz) - strtotime($emitted) da un resultado perfecto. ¿Algo que me perdí?

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Debe decirle a Carbon qué zona horaria se usa para la cadena que debe analizarse. Creo que la función strtotime no es la opción correcta para usted, porque siempre considera que las cadenas analizadas usan la zona horaria de default_timezone_get()

Por ejemplo:

 echo $now = Carbon::now('Australia/Perth'); echo "<br>"; echo $emitted = Carbon::parse($now, 'Australia/Sydney'); echo "<br>"; echo "diff from carbon->"; echo $diff = $now->diffInSeconds($emitted); echo "<br> diff from Normal->"; echo $diff1 = strtotime($now) - strtotime($emitted);

Daría como resultado:

 diff from carbon->7200 diff from Normal->0

La diferencia normal obviamente es incorrecta ya que se supone que $emited debe usar 'Australia/Sydney' y $now debe usar 'Australia/Perth'. Pero como las dos variables tienen exactamente la misma representación de cadena, la diferencia es 0. (Se pierde la información sobre las diferentes zonas horarias).

Sin embargo, la diferencia con Carbon muestra la diferencia correcta de 7200 segundos (= 2 horas), que es la diferencia real entre Australia/Sídney y Australia/Perth.

De forma predeterminada, todas las funciones de fecha y hora (incluido Carbon) usan el valor de la variable de zona horaria en su archivo config/app.php .

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda