El objeto Date de JavaScript
El objeto Date de QML amplía el objeto Date de JS con funciones que tienen en cuenta la configuración regional.
Las funciones que aceptan un argumento format toman los valores de enumeración Locale.LongFormat, Locale.ShortFormat, Locale.NarrowFormat, o una cadena que especifica el formato.
La forma de las cadenas de formato admitidas es la descrita en la documentación de QDate::toString(), QTime::toString() y QDateTime::toString().
Si la fecha no es válida, se devuelve una cadena vacía.
Valores de enumeración de formato
Utilice los valores de enumeración cuando desee un formato que coincida con las preferencias de la configuración regional.
| Locale.FormatoLargo | Formato más largo |
| Formato corto | Formato más corto |
| Locale.NarrowFormat | En este contexto igual que Locale.ShortFormat |
El formato que representan las enumeraciones dependerá de su configuración regional, pero también del método para el que se utilice la enumeración.
Por ejemplo, para la configuración regional en_US, se utilizan estas cadenas de formato:
| Función | Enumeración de configuración regional | Cadena de formato |
|---|---|---|
| fromLocaleDateString, toLocaleDateString | Locale.LongFormat | dddd, MMMM d, yyyy |
| fromLocaleDateString, toLocaleDateString | Locale.FormatoCorto | M/d/yy |
| fromLocaleTimeString, toLocaleTimeString | Locale.FormatoLargo | h:mm:ss AP t |
| fromLocaleTimeString, toLocaleTimeString | Locale.FormatoCorto | h:mm AP |
| fromLocaleString, toLocaleString | Locale.FormatoLargo | dddd, MMMM d, yyyy h:mm:ss AP t |
| fromLocaleString, toLocaleString | Locale.FormatoCorto | M/d/yy h:mm AP |
Notas adicionales
El uso de las funciones locale-aware para realizar el formateo de fecha u hora puede resultar en tiempos formateados incorrectamente, debido a una inconsistencia en la especificación entre Qt y JS. ECMA-262 especifica que las fechas históricas deben interpretarse proyectando las reglas actuales para el ahorro de luz diurna en años pasados, mientras que Qt utiliza datos históricos (cuando están disponibles) para determinar si el ahorro de luz diurna estaba en vigor para una fecha dada. Por lo tanto, construir un valor de Fecha en JS y convertirlo en una cadena utilizando las funciones de localización puede dar un resultado incorrecto en una hora, si el horario de verano está actualmente en vigor, mientras que no lo estaba para la hora especificada, o viceversa.
Existen diferentes formatos de fecha con diferentes interpretaciones de los años negativos. El lenguaje humano común no tiene un año 0. El año después de 1BC es 1AD. Este entendimiento se refleja cuando se imprimen o analizan fechas en uno de los formatos no estandarizados por ECMAScript. Esto es: toString(), toLocaleString(), toUTCString() y amigos. ECMAScript sí estandariza un formato: ISO 8601. Esto es lo que se obtiene cuando se llama a toISOString(). Este formato incluye un año 0, que es 1BC en otros formatos. Por lo tanto, se obtienen años diferentes cuando se imprimen fechas negativas con toISOString() y toString().
Cuando se establece el año utilizando el constructor Date o set(UTC)FullYear(), se utiliza la convención establecida por ISO 8601 y 0 es un año válido. Esto significa que los años negativos establecidos con el constructor o set(UTC)FullYear() están basados en cero y por lo tanto desplazados en un año de lo que se imprime con toString() y friends. Al analizar la salida de cualquiera de los métodos to*String() se obtendrá el mismo valor de fecha desde el que se imprimió. Date.parse() reconocerá los diferentes formatos y su convención sobre la existencia del año 0.
Tenga en cuenta que todo esto es diferente de lo que se obtiene en otras implementaciones de JavaScript que normalmente tratan el año 0 como válido en todas las representaciones de cadena. Sin embargo, como los formatos de fecha son "dependientes de la implementación" en el estándar ECMAScript, esto sigue siendo válido.
string Date::toLocaleString(locale, format)
Convierte la Fecha en una cadena que contiene la fecha y la hora adecuadas para el locale especificado en el format especificado.
Si no se especifica format, se utilizará Locale.LongFormat.
Si no se especifica locale, se utilizará la configuración regional predeterminada.
El siguiente ejemplo muestra la fecha y hora actuales formateadas para la configuración regional alemana:
string Fecha::toLocaleDateString(configuración regional, formato)
Convierte la Fecha en una cadena que contiene la fecha adecuada para el locale especificado en el format especificado.
Si no se especifica format, se utilizará Locale.LongFormat.
Si no se especifica locale, se utilizará la configuración regional predeterminada.
El siguiente ejemplo muestra la fecha actual formateada para la configuración regional alemana:
import QtQuick 2.0 Text { text: "The date is: " + new Date().toLocaleDateString(Qt.locale("de_DE")) }
string Fecha::toLocaleTimeString(configuración regional, formato)
Convierte la Fecha en una cadena que contiene la hora adecuada para el locale especificado en el format especificado.
Si no se especifica format, se utilizará Locale.LongFormat.
Si no se especifica locale, se utilizará la configuración regional por defecto.
El siguiente ejemplo muestra la hora actual formateada para la configuración regional alemana:
import QtQuick 2.0 Text { text: "The date is: " + new Date().toLocaleTimeString(Qt.locale("de_DE")) }
string Date::fromLocaleString(locale, dateTimeString, format)
Convierte la cadena datetime dateTimeString en un objeto Date utilizando locale y format.
Si no se especifica format, se utilizará Locale.LongFormat.
Si no se especifica locale, se utilizará la configuración regional predeterminada.
El siguiente ejemplo muestra cómo se analiza una fecha y hora a partir de una cadena de fecha y hora con un formato determinado utilizando la configuración regional predeterminada:
import QtQml 2.0 QtObject { property var locale: Qt.locale() property string dateTimeString: "Tue 2013-09-17 10:56:06" Component.onCompleted: { print(Date.fromLocaleString(locale, dateTimeString, "ddd yyyy-MM-dd hh:mm:ss")); } }
string Date::fromLocaleDateString(locale, dateString, format)
Convierte la cadena de fecha dateString en un objeto Date utilizando locale y format.
Si no se especifica format, se utilizará Locale.LongFormat.
Si no se especifica locale, se utilizará la configuración regional predeterminada.
El siguiente ejemplo muestra cómo la fecha actual se formatea primero como una cadena de fecha utilizando la configuración regional y el formato predeterminados y, a continuación, se vuelve a analizar de la misma manera:
import QtQml 2.0 QtObject { property var locale: Qt.locale() property date currentDate: new Date() property string dateString Component.onCompleted: { dateString = currentDate.toLocaleDateString(); print(Date.fromLocaleDateString(dateString)); } }
string Date::fromLocaleTimeString(locale, timeString, format)
Convierte la cadena de tiempo timeString en un objeto Date utilizando locale y format.
Si no se especifica format, se utilizará Locale.LongFormat.
Si no se especifica locale, se utilizará la configuración regional predeterminada.
El siguiente ejemplo muestra cómo la hora actual se formatea primero como una cadena de tiempo utilizando la configuración regional predeterminada y un formato corto, y luego se vuelve a analizar de la misma manera:
import QtQml 2.2 QtObject { property var locale: Qt.locale() property date currentTime: new Date() property string timeString Component.onCompleted: { timeString = currentTime.toLocaleTimeString(locale, Locale.ShortFormat); print(Date.fromLocaleTimeString(locale, timeString, Locale.ShortFormat)); } }
string Date::timeZoneUpdated()
Informa al motor JS de que la zona horaria del sistema ha cambiado, lo cual es necesario para la correcta manipulación de los datos datetime.
JS almacena los objetos Date en hora UTC; todo acceso a y desde componentes Date en hora local implica la aplicación del desfase actual respecto a UTC. Si el desfase actual cambia debido a la actualización de la zona horaria, el motor JS necesita ser informado para que pueda recalcular el desfase.
Esta función debe ser llamada después de que la zona horaria del sistema haya sido actualizada.
Por ejemplo, una aplicación que cambia la zona horaria llamaría a timeZoneUpdated() después de establecer la nueva zona horaria:
property string selectedTimeZone
onSelectedTimeZoneChanged: {
MyFunctions.setSystemTimeZone(selectedTimeZone)
Date.timeZoneUpdated()
}Véase también Locale.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.