# 时间显示文字问题的修正 #
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
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
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 | 根据区域性定义如何设置数值格式以及如何显示数值。 |
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
相关文章推荐
- dos.h、alloc.h、malloc.h、stdlib.h、process.h
- c 操作函数,所在函数库为string.h、mem.h
- C#数据访问类
- 对oracle日期格式的认识
- CVS报表工具
- c 接口子程序,所在函数库为:dos.h、bios.h
- C库函数手册---stdlib.h、process.h,assert.h、math.h,io.h、conio.h、stat.h、dos.h、stdio.h、signal.h,,
- LDAP学习
- C库函数手册---目录函数,所在函数库为dir.h、dos.h
- Top 10 Reasons for Developers to Create Smart Clients
- C库函数手册---math.h、stdlib.h、string.h、float.h
- 远程桌面会话
- C库函数手册(ctype.h)
- 岁月回想~~~
- msn blog火热注册中。。。。。。
- 【一对男孩女孩的通信记录】
- 什么是MVC[转贴]
- 微软MSN周五将推出免费博客
- 一篇不错的数据结构学习笔记!
- 关于使用jfreechart和cewolf的使用关键