Estoy usando IntlDateTimeFormat con algunas opciones de fecha y hora. Sin embargo, tengo dificultades para obtener el formato que quiero al final.
A continuación se muestra el código que tengo actualmente. El resultado que busco es devolver una cadena con el siguiente formato:
Sept 27, 2022 at 12:20 PM
Hasta ahora, el código actual está regresando:
27 Sept 2022 at 12:20
Tenga en cuenta que falta AM/PM (en mayúsculas también sería genial)
public dateOptions = {
month: 'short',
year: 'numeric',
day: '2-digit',
} as const;
public timeOptions = {
hour: 'numeric',
minute: 'numeric',
dayPeriod: 'narrow',
} as const;
private newDateString() {
const now = new Date();
const tz = Intl.DateTimeFormat().resolvedOptions().locale;
const date = Intl.DateTimeFormat(tz, this.dateOptions).format(now);
const time = Intl.DateTimeFormat(tz, this.timeOptions).format(now);
return `${date}` + ' at ' + `${time}`;
}
Se eliminó dayPeriod: 'narrow' y luego se agregó la opción para usar el tiempo en formato de 12 horas hourCycle: 'h12' .
dayPeriod: 'narrow' daría formato a la hora en el formato de texto dependiendo de la configuración regional.hourCycle: 'h12' | 'h11' | 'h23' | 'h24' daría formato a la hora en el formato de 12/24 horas var dateOptions = {
month: 'short',
year: 'numeric',
day: '2-digit',
};
var timeOptions = {
hour: 'numeric',
minute: 'numeric',
hourCycle: 'h12'
};
function newDateString() {
const now = new Date();
const tz = Intl.DateTimeFormat().resolvedOptions().locale;
const date = Intl.DateTimeFormat(tz, this.dateOptions).format(now);
const time = Intl.DateTimeFormat(tz, this.timeOptions).format(now);
console.log(`${date}` + ' at ' + `${time}`);
}
newDateString(new Date())
dayPeriod: 'narrow' El estilo de formato utilizado para los períodos del día como "en la mañana", "am", "mediodía", "n", etc., cámbielo a hora12: verdadero
dateOptions = {
day: '2-digit',
year: 'numeric',
month: 'short',
}
timeOptions = {
hour: 'numeric',
minute: 'numeric',
hour12: true
//dayPeriod: 'narrow',
}
function newDateString(tz) {
const now = new Date();
//const tz = Intl.DateTimeFormat().resolvedOptions().locale;
const date = Intl.DateTimeFormat(tz, this.dateOptions).format(now);
const time = Intl.DateTimeFormat(tz, this.timeOptions).format(now);
return `${date} at ${time}`;
}
function justAnExampleAsTheOpWatnsThis() {
const now = new Date();
const date = Intl.DateTimeFormat("en-GB", this.dateOptions).format(now);
const time = Intl.DateTimeFormat("en-US", this.timeOptions).format(now);
return `${date} at ${time}`;
}
console.log(newDateString("en-US"));
console.log(newDateString("en-GB"));
console.log("Op want this :" + justAnExampleAsTheOpWatnsThis());