当前位置: 首页 > 图文教程 > 服务器 > Windows服务器 > Windows Server 2003 IIS 的日期格式问题

Windows服务器
Win 2000检测系统安全清单(4)
用Windows Server 2003搭建安全文件服务器(1)
用Windows Server 2003搭建安全文件服务器(2)
用Windows Server 2003搭建安全文件服务器(3)
用Windows Server 2003搭建安全文件服务器(4)
2000 Server 实现磁盘的容错功能
安装Windows 2000十大注意事项
Windows 2000中任务时间表的帐号问题
Win 2000常用系统进程列表
Win2K Internet服务器安全构建指南(一)(IIS篇)
Win2K Internet服务器安全构建指南(三)
Win2K Internet服务器安全构建指南(四)
Win2K Internet服务器安全构建指南(五)
WIN2003服务器安全配置终极技巧(1)
WIN2003服务器安全配置终极技巧(2)
WIN2003服务器安全配置终极技巧(3)
WIN2003服务器安全配置终极技巧(4)
WIN2003服务器安全配置终极技巧(5)
Win2K服务器端安全设置教程(1)
Win2K服务器端安全设置教程(2)

Windows服务器 中的 Windows Server 2003 IIS 的日期格式问题


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-02   浏览: 370 ::
收藏到网摘: n/a

今天我把一个用VS2005做的Web程序发布到了Windows Server 2003上。结果发现程序中的所有短日期格式都变成了27/12/2006这样的格式。而服务器上的区域语言选项中明明是2006-12-30这样的格式。

后来发现虚拟目录的“属性->ASP.Net->编辑配置...->应用程序"选项卡中的"全球化设置"中的"区域性"中默认是"af-ZA".我把它改为"zh-CN"后,再访问我发布的网站,发现日期格式已经变为"2006/12/27".但是它与服务器上的区域语言选项中明明是2006-12-30这样的格式还是不同的.

 

在服务器上 :控制面板--〉区域和语言选项--〉区域选项--〉自定义---〉日期---〉日期分隔符 下拉选项 即可选择

你不应该依赖服务器上的设置,要养成好的习惯,。
在你的程序李进行格式化
 DateTime a = DateTime.Now
a.ToString("yyyy-MM-dd")

方法是在页面的Page_Load()中,加入以下代码:
System.Globalization.CultureInfo myCI = new System.Globalization.CultureInfo("zh-CN", true);
myCI.DateTimeFormat.ShortDatePattern = "yyyy-M-d";
System.Threading.Thread.CurrentThread.CurrentCulture = myCI;

问题的原因是,CultureInfo.CurrentCulture 的UseUserOverride属性默认是false,表示要使用.Net的默认格式(yyyy/M/d),而不是用服务器上的区域选项中的设置(yyyy-M-d)。

所以只要用代码
System.Globalization.CultureInfo myCI = new System.Globalization.CultureInfo("zh-CN", true);
System.Threading.Thread.CurrentThread.CurrentCulture = myCI;
将UseUserOverride属性设为true就可以了。

不过在实践中不知为什么居然不好用。所以逼得我只好手动设置格式,代码也就变成了:
System.Globalization.CultureInfo myCI = new System.Globalization.CultureInfo("zh-CN", true);
myCI.DateTimeFormat.ShortDatePattern = "yyyy-M-d";
System.Threading.Thread.CurrentThread.CurrentCulture = myCI;