Hmmm... Muy extraño.
De cualquier forma parece que al probar el código que envié hubo algún error de
transcripción, ya que debería mostrar el texto "Actual" solo en el primer caso.
Aunque no creo que esto vaya a afectar el resultado final, sería conveniente
verificar el código, no vaya a ser que el diagnóstico nos desoriente aún más.
El primer resultado es bastante extraño ya que corresponde al llamado a
TestCulture con un parámetro nulo, es decir que si el código ejecutado coincide
con aquel que envié, entonces en este caso en particular no debería inicializar
la cultura de la página sino tomar el valor que ya viene configurado, y como se
trata de la primera prueba, este es el valor que supuestamente ASP.NET asignó a
partir de la configuración de web.config. El resultado muestra que la cultura
configurada corresponde a la 'Invariant Culture', o sea que fue inicializada
con un string vacío (y *no* nulo).
El segundo resultado también es inesperado ya que muestra que la configuración
de la cultura "es-AR" no es la habitual.
¿Con cual servidor ocurre esto, IIS o el servidor de desarrollo que viene con
Visual Studio? Si se trata del segundo, entonces hay que tener en cuenta que en
ese caso el proceso ASP.NET ejecuta con la identidad del usuario logueado
actualmente. Si la configuración regional de ese usuario fue modificada esto
podría explicar los resultados que estás observando, aunque a primera vista no
parece explicar el primer resultado.
Modificá Page_Load de la siguiente forma para identificar el usuario con el
cual ejecuta el proceso, de tal forma que puedas examinar su configuración
regional.
protected void Page_Load ( object sender, EventArgs e )
{
status.Text = "Identidad: " +
System.Security.Principal.WindowsIdentity.GetCurrent().Name + "<br><br>"
+ TestCulture( null )
+ TestCulture( "es-AR" )
+ TestCulture( "es-UY" )
+ TestCulture( "en-US" );
}
Saludos,
Fernando Tubio
----- Original Message -----
From: Juan Granillo
To: [email protected]
Sent: Thursday, March 01, 2007 5:10 PM
Subject: [puntonet] Culture Info
Hola Fernando,
esto es lo q sale
Actual: - Invariant Language (Invariant Country)
ShortDatePattern: MM/dd/yyyy
Fecha: ERROR
Actual: es-AR - Spanish (Argentina)
ShortDatePattern: M/d/yyyy
Fecha: ERROR
Actual: es-UY - Spanish (Uruguay)
ShortDatePattern: dd/MM/yyyy
Fecha: 30/01/2007 12:00:00 a.m.
Actual: en-US - English (United States)
ShortDatePattern: M/d/yyyy
Fecha: ERROR
como veras, el es-AR lo pone como M/d/yyyy
Saludos
Juan
-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] Behalf Of Fernando Tubio
Sent: Jueves, 01 de Marzo de 2007 03:32 p.m.
To: [email protected]
Subject: [puntonet] Culture Info
Juan,
¿Que sucede cuando se ejecuta el siguiente código?
<%@ Page Language="C#" %>
<script runat="server">
private string TestCulture ( string cultureName )
{
if ( cultureName != null )
Culture = cultureName;
DateTime date;
return (cultureName != null ? cultureName : "Actual") + ": "
+ System.Globalization.CultureInfo.CurrentCulture + " - " +
Culture
+ "<br>ShortDatePattern: "
+
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern
+ "<br>Fecha: "
+ (DateTime.TryParse( "30/01/2007", out date ) ?
date.ToString( ) : "ERROR")
+ "<br><br>";
}
protected void Page_Load ( object sender, EventArgs e )
{
status.Text = TestCulture( null )
+ TestCulture( "es-AR" )
+ TestCulture( "es-UY" )
+ TestCulture( "en-US" );
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="status" runat="server" />
</form>
</body>
</html>
Saludos,
Fernando Tubio
----- Original Message -----
From: Juan Granillo
To: [email protected]
Sent: Thursday, March 01, 2007 12:13 PM
Subject: [puntonet] Culture Info
Hola lista,
Tengo que validar que una fecha es valida en una pagina asp.net 2.0.
Agregue un comparevalidator, con operator=datatypecheck y type=date. El
problema es que no me toma como valida una fecha 30/01/2007, pero si es valida
01/30/2007.
Tengo configurado el web.config seteada con la cultura de argentina.
<globalization culture="es-AR" uiCulture="es-AR"/>
si lo cambio a
<globalization culture="es-UY" iCulture="es-UY"> (uruguay)
el validador de fecha funciona bien, es decir, toma como valido
30/01/2007, y no 01/30/2007.
Alguna idea de que puede estar fallando? o es un bug ?
Saludos a todos
Juan