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.

Separador de localidad de fecha de Freemarker

¿Es posible en Freemarker recuperar el carácter separador usado en el formato de localización?

Ejemplo de script:

[#setting locale=”de”]
[#assign date = .now?date /]
de ${date?string.short}

[#setting locale=”en”]
en ${date?string.short}

Imprime lo siguiente:

de 22.11.21
en 11/22/21

¿Es posible obtener el punto o la barra (carácter separador) desde el contexto de Freemarker? ¿Existe una herramienta incorporada que pueda devolver esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no puedo probar ni verificar el código. Sin embargo, por lo que entiendo, no es posible recuperar el carácter separador utilizado en el formato local directamente en FreeMarker. FreeMarker no tiene una función incorporada que pueda devolver esta información.

    Sin embargo, hay una solución alternativa que implica agregar un método personalizado para recuperar el carácter separador. Este método se puede crear utilizando Java y luego llamarlo en la plantilla FreeMarker. El método debe tomar la configuración regional como entrada y luego devolver el carácter separador utilizado en esa configuración regional.

    Aquí hay un ejemplo de cómo podría verse el método Java:

    public class LocaleUtils {
    
        public static String getSeparator(Locale locale) {
            String pattern = ((SimpleDateFormat) DateFormat.getDateInstance(DateFormat.SHORT, locale)).toPattern();
            for (char c : pattern.toCharArray()) {
                if (!Character.isLetter(c)) {
                    return String.valueOf(c);
                }
            }
            return null;
        }
    
    }
    

    Este método toma una configuración regional como entrada, y luego utiliza la clase DateFormat para obtener el patrón del formato de fecha corto para esa configuración regional. Luego recorre los caracteres del patrón y devuelve el primer carácter que no sea una letra (que debería ser el carácter separador).

    Para usar este método en una plantilla FreeMarker, deberá importar la clase y luego llamar al método, pasando la configuración regional como argumento:

    <#import "com.example.LocaleUtils" as LocaleUtils>
    
    [#setting locale="de"]
    [#assign date = .now?date /]
    de ${date?string.short}${LocaleUtils.getSeparator(locale)}
    <br>
    [#setting locale="en"]
    en ${date?string.short}${LocaleUtils.getSeparator(locale)}
    

    Esto daría como resultado:

    de 22.11.21.
    en 11/22/21/
    

    Tenga en cuenta que el método getSeparator puede no funcionar para todas las configuraciones regionales, ya que algunas configuraciones regionales pueden utilizar múltiples caracteres separadores o formatos de fecha no estándar.

Comments are closed.