你目前正处于脱机状态,正在等待 Internet 重新连接

PRB:VBScript 日期和时间格式随登录的用户不同而变化

本文的发布号曾为 CHS218964
不再更新的 KB 内容免责声明
本文介绍那些 Microsoft 不再提供支持的产品。因此本文按“原样”提供,并且不再更新。
症状
在您使用 VBScript Now()、Date() 或 Time() 函数时,日期和时间格式会根据登录计算机的用户不同而变化。这就给使用 Active Server Page (ASP) 开发的服务器应用程序带来一个问题(对这样的程序,日期和时间格式是至关重要的),即,当不同用户登录到服务器及没有用户登录时,日期和时间格式都会发生变化。

例如,某个应用程序可能要求您用四位数字格式,而不是两位数字格式显示世纪(例如,1999 而非 99)。某个用户登录到 IIS 服务器,并在“控制面板”中的区域设置下,将“日期”格式设置为使用四位数字年份(例如,mm/dd/yyyy)。当该用户通过浏览器打开 Active Server Page 时,年份将以四位数字显示。而当用户从计算机上注销,然后再从浏览器中打开 Active Server Page 时,年份却变成以两位数字显示。
原因
VBScript 函数 Now()、Date() 和 Time() 的格式依赖于计算机的区域设置。而区域设置会根据登录计算机的用户不同(或没有用户登录)而发生变化。结果造成没有办法确保日期和时间格式始终一致。
解决方案
要确保日期和时间格式一致,请选用以下方法:

  • 使用 JScript,因为它的日期和时间格式不依赖于区域设置。
  • 使用除 Now()、Date() 和 Time() 之外的其它函数显示日期和时间。因为其它日期和时间函数(例如,Day()、Month()、Year() 等)不依赖于区域设置,其格式也不随登录计算机的用户不同而变化。例如,下面的函数,MyDate(),将总返回 mm/dd/yyyy 格式的日期:
    Function MyDate()     dteCurrent = Date()     dteDay = Day(dteCurrent)     dteMonth = Month(dteCurrent)     dteYear = Year(dteCurrent)     MyDate = dteMonth & "/" & dteDay & "/" & dteYear   End Function
状态
这种现象是设计使然。
参考
关于 VBScript 和 JScript 的详细信息,请访问 MSDN Scripting 站点,地址是:
有关其它信息,请单击下列文章编号,查看相应的 Microsoft Knowledge Base 文章:
248142 Windows NT 4.0 和 Windows 2000 中的默认系统日期行为
属性

文章 ID:218964 - 上次审阅时间:01/28/2004 15:35:05 - 修订版本: 2.0

  • Microsoft Active Server Pages 4.0
  • Visual Basic,Scripting Edition 5.0
  • Visual Basic,Scripting Edition 3.0
  • Visual Basic,Scripting Edition 4.0
  • kbgrpdsasp kbprb kbscript KB218964
反馈