您的位置:首页 > 其它

# 时间显示文字问题的修正 #

2004-12-02 17:08 429 查看
该问题早就有了,最新的一个版本里也没得到解决。主要问题是 显示时间的文字是随Forum运行的服务器的地域信息而定,不能随用户设置的语言来更改。

Edit Memo by Chaozi :

如何解决问题,其实很简单,在时间字符串化的方法中提供了根据地域信息显示语言文字的参数 DateTime.ToString(string format,System.IFormatProvider provider); 根据用户选择的语言向ToString方法提供这个 provider就可以显示相应语言的时间了。

Step1:/Components/Components/User.cs  加入Culture属性

public CultureInfo Culture

实现 IFormatProvider 的类(MSDN)

说明
CultureInfo
表示有关特定区域性的信息,包括区域性的名称、书写体系和使用的日历,以及有关对常用操作(如格式化日期和排序字符串)提供信息的区域性特定对象的访问。
DateTimeFormatInfo
定义如何根据区域性设置 DateTime 值的格式并显示这些值。
NumberFormatInfo
根据区域性定义如何设置数值格式以及如何显示数值。
Step2: 修改所有时间ToString方法,加入Cultureinfo信息,这是个细致的工作,不要丢哦。

Formatter.cs  中有很多方法对Date对象进行字串化,为了方便定义一个静态属性

public static CultureInfo Cul
 case UserAttributes.Joined:
                    string format = user.DateFormat;
                //    l.Text = String.Format(text, ResourceManager.GetString("PostFlatView_Joined_chaozi"),user.GetTimezone(user.DateCreated).ToString(format,Users.GetUser().Culture));
                    l.Text = String.Format(text, ResourceManager.GetString("PostFlatView_Joined_chaozi"),Users.GetUser().GetTimezone(user.DateCreated).ToString(Users.GetUser().DateFormat,Users.GetUser().Culture));
                    break;

注释掉的是原有的,下面的是超子改的,区别很明显 user 为要查看的用户,Users.GetUser()为当前用户 , 我们显示时间格式,以及调整相对时区都要针对当前用户,而不是要查看的这个用户,如果不修改的话显示的时间应该是混乱的,日期的格式当然也是啥样的都有了。这种问题比较多,慢慢的一个个的摘。

Step3:在上述的修改都完成后,需要修改语言设置变更时时间格式不更新的bug
       
Click here
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: