最近在编写的一个程序,发生的问题相当奇怪,在不同配置的三台机器运行良好,只是在一台装有windows 2003的机器上,总是运行的结果与其他的不同。
最初还以为是程序的问题,之后看到在其他机器上运行的结果都一致,可见同代码无关。
开始怀疑是windows2003的区域设置不正确,但是修改多次之后结果都是不行,而且错的结果倒是相同的。
最终才明白:
该机器的区域设置过去已修改过几次,造成不同账号的区域设置不同,当程序运行时,用不同账号所获取的日期格式就不同,造成日期的混乱。就算在程序中设置"lcid"都不起作用,始终给我一个错误的结果。
正确的做法是,在修改区域设置属性时,要记得在"默认用户帐户设置"中选择"将所有设置应用于当前用户帐户和默认用户配置文件"。
如图:
之后,重启机器,程序运行的结果如我所愿,同其他的三台机器也一致了。