VB6的ActiveX组件中一个诡异的日期格式化显示的问题

环境: Windows  Server 2003

在语言与区域设置中已经将区域设置为美国,日期格式为“mm/dd/yyyy”,但是在VB6的Active X DLL中利用Format$(now,"Short Date")得到的日期格式总是“dd/mm/yyyy”,百思不得其解,使用ASP,用VB6做了一个简单的Exe程序,显示的格式化日期格式都是正确的,就是DLL不行。。。Google了一顿,没有找到直接答案,但是发现了几个Windows API,激发了灵感,其中2个是:

GetSystemDefaultLCID

GetUserDefaultLCID

获取系统和用户的默认LCID,调用这2个API后发现,系统的是1033,用户的是1027.在ASP页面设置Session.LCID=1027之后,果然,日期格式变成了dd/mm/yyyy,看来问题出在ActiveX dll里的Format函数使用了用户区域设置,而非系统区域设置,而在Windows的区域与语言设置里面设置的似乎只是系统级别的区域设置,那么怎么让用户的和系统的同步呢?

控制面板->区域和语言选项->高级选项卡->

“将所有设置应用于当前用户帐户和默认用户配置文件”,打上勾,再点“应用”就可以了。

问题是:怎么单独设置某个用户的区域设置呢?不知道,不过这也足够解决问题了。

posted on 2011-05-26 14:52  零度的火  阅读(366)  评论(0编辑  收藏  举报

导航