Ir al contenido

Fechas y monedas multi-país con ASP

La propiedad LCID del objeto Session resulta útil en ASP clásico para controlar el formato regional de fechas, horas, números y monedas. Al cambiar Session.LCID, las funciones de VBScript sensibles a la configuración regional presentan los valores según el país o la región seleccionada.

Session.LCID no detecta la ubicación de la persona que visita la página. La aplicación debe elegir el identificador regional a partir de una preferencia explícita, de la configuración de la cuenta o de otra información validada.

Si no se asigna otro valor, la sesión utiliza la configuración regional predeterminada por el entorno del servidor. Podemos consultar el identificador activo de esta forma:

<%
Response.Write("LCID actual: " & Session.LCID)
%>

El valor devuelto es un número que representa una configuración regional concreta.

La función Date() devuelve la fecha actual del servidor. Cuando se convierte en texto, su presentación depende de la configuración regional activa.

Por otro lado, FormatCurrency() convierte una cantidad en una cadena con el símbolo monetario, los separadores y el número de decimales correspondientes al valor de Session.LCID.

<%
Response.Write("Fecha: " & Date() & "<br>")
Response.Write("Moneda: " & FormatCurrency(50000))
%>

Date() utiliza la fecha del servidor, no la fecha local del navegador. Si la aplicación trabaja con personas situadas en distintas zonas horarias, deberá gestionar también la zona horaria de forma independiente.

Para comparar varios formatos utilizaremos estos valores de LCID:

  • 1034: español de España.
  • 2057: inglés del Reino Unido.
  • 1033: inglés de Estados Unidos.
  • 1036: francés de Francia.

El identificador regional modifica la forma de presentar los datos, pero no convierte importes entre monedas. Por ejemplo, FormatCurrency(50000) mostrará el mismo valor numérico con símbolos y separadores diferentes; no calculará tipos de cambio.

Podemos asignar un nuevo valor directamente a Session.LCID antes de utilizar las funciones de formato:

<%
Session.LCID = 1033
Response.Write("Fecha: " & Date() & "<br>")
Response.Write("Moneda: " & FormatCurrency(50000))
%>

El cambio permanece asociado a la sesión hasta que se asigne otro valor o finalice la sesión.

El siguiente ejemplo conserva el LCID original, muestra la fecha y la moneda con cuatro configuraciones regionales y restaura el valor inicial al terminar:

<%
Option Explicit
Dim lcidOriginal
lcidOriginal = Session.LCID
Sub MostrarFormato(nombre, lcid)
Session.LCID = lcid
Response.Write("<h2>" & Server.HTMLEncode(nombre) & _
" (" & Session.LCID & ")</h2>")
Response.Write("Fecha: " & Date() & "<br>")
Response.Write("Moneda: " & FormatCurrency(50000) & "<br>")
End Sub
MostrarFormato "España", 1034
MostrarFormato "Reino Unido", 2057
MostrarFormato "Estados Unidos", 1033
MostrarFormato "Francia", 1036
Session.LCID = lcidOriginal
%>

Restaurar Session.LCID evita que el ejemplo altere el formato regional utilizado por otras páginas durante el resto de la misma sesión.

En una aplicación real conviene validar cualquier LCID recibido desde formularios, cookies o parámetros de la petición y limitarlo a una lista de valores compatibles con el servidor.

Foto de Víctor Cuervo

Víctor Cuervo

Programador, Arquitecto IT, álter ego de Línea de Código, amante de las tecnologías, generador de conocimiento y facilitador del aprendizaje.

Descarga el código de Fechas y monedas multi-país con ASP

Descubre cómo Fechas y monedas multi‑país con ASP simplifican el formato regional usando Session.LCID, ofreciendo precisión y velocidad para usuarios internacionales.

Descargar código