aspx本地化本地资源日期时间格式

时间:2015-12-22 09:03:50

标签: c# asp.net localization

我有一个ASPX应用程序,我已经开始应用本地化,旨在使用户可以切换语言。 一个意外的变化使得当用户现在使用网页时,他们的日期时间格式正在服务器端使用。在过去,这不是问题。 我不确定解决这个问题的最佳方法是什么。

 cmd.CommandText = "Insert into dbo.Hours (Username,LogIn,LogOut,TotalHours,Char,Game,Server1,Server2,S1Plat,S2Plat) VALUES (@uname, @in, @out, @totlH, @char, @game, @S1, @S2, @S1Plat, @S2Plat)";
 cmd.Parameters.AddWithValue("@in", DateTime.Now);
 cmd.Parameters.AddWithValue("@out", DateTime.Parse("1/31/1753"));
 cmd.Parameters.AddWithValue("@char", drop_vet.SelectedValue);
 cmd.Parameters.AddWithValue("@game", drop_game.SelectedValue);

 if (chk_duties.Checked)
 {
      cmd.Parameters.AddWithValue("@S1", txt_duties.Text);
      cmd.Parameters.AddWithValue("@S2", "Assigned by: " + drop_gm.Text);
      cmd.Parameters.AddWithValue("@S1Plat", "N/A");
      cmd.Parameters.AddWithValue("@S2Plat", "N/A")
 }
 else
 {
      cmd.Parameters.AddWithValue("@S1", drop_server1.SelectedValue);
      cmd.Parameters.AddWithValue("@S2", drop_server2.SelectedValue);
      cmd.Parameters.AddWithValue("@S1Plat", drop_platformS1.SelectedValue);
      cmd.Parameters.AddWithValue("@S2Plat", drop_platformS2.SelectedValue);

      cmd.CommandText += "; Update dbo.Servers SET LastVisit = @lv where platform = @s1plat and number = @s1Num and Game = @game";
      cmd.CommandText += "; Update dbo.Servers SET LastVisit = @lv where platform = @s2plat and number = @s2Num and Game = @game";
      cmd.Parameters.AddWithValue("@lv", DateTime.Now);
      cmd.Parameters.AddWithValue("@s1Num", drop_server1.SelectedValue.Split(' ')[0]);
      cmd.Parameters.AddWithValue("@s2Num", drop_server2.SelectedValue.Split(' ')[0]);
 }
 cmd.ExecuteNonQuery();

 conn.Close();

目前,在服务器上使用或在美国语言环境中设置的计算机上使用时,它可以正常工作。但是,当计算机处于荷兰语(例如)语言环境时,此函数将在DateTime.Parse上失败,并以错误的格式说明。

作为一个quickfix我将我的应用程序恢复到我开始应用本地化之前,目前我也担心它可能现在使用本地机器的时区而不是服务器时间,但我还没有能够验证这一点。有没有人对我有一些建议? Bassicly我试图在aspx上使用多种语言(我使用resx文件)而不改变其他语言环境的东西

1 个答案:

答案 0 :(得分:0)

我设法使用此代替上述方法解决了这个问题。

cmd.Parameters.AddWithValue("@out", DateTime.ParseExact("01/31/1753 00:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture));