ASP:now()获取的时间里带有中文“上午/下午”

发布:2010-12-01 15:03   点击981次   评论:0

在使用ASP时,采用now()获取的时间里带有中文“上午”,“下午”的问题~
http://blog.sina.com.cn/s/blog_4cb89bc8010007l3.html

============================================================

IIS 4.0 (Windows NT 4.0)

没有人实际登录服务器时,IIS 将从系统默认设置(具体来说就是从 Locale.nls 文件)中读取日期/时间格式(和其他区域设置)。您可以在“控制面板”的“区域设置”部分更改此设置,更改之后必须重新启动计算机。

当有人登录计算机时,IIS 会读取登录用户的区域设置。这些设置是从 HKEY_CURRENT_USER/Control Panel/International 注册表配置单元中的用户配置文件设置中读取的。您可以在“控制面板”的“区域设置”部分更改此设置,更改之后必须重新启动计算机。
IIS 5.0(Windows 2000 和 Windows 2000 Service Pack 1)
在操作系统安装期间,会指定“区域设置”选项并会将其写入系统注册表的 HKEY_USERS/.Default/Control Panel/International 配置单元中。

通常,当显示日期/时间的 ASP 页得到请求时,IIS 将首先确定注册表中是否已加载身份验证用户的配置文件。如果已加载,IIS 将读取该用户配置文件的区域设置 ID,然后在 IIS 高速缓存中进行查找(如果此区域设置的区域设置已缓存)。如果被缓存,IIS 将用缓存的格式为请求提供服务。如果没有在缓存值中找到该区域设置,则从 HKEY_CURRENT_USER/Control Panel/International 注册表配置单元中该用户的配置文件设置内读取日期/时间格式。读取的信息随即被缓存,而 IIS 将显示具有所缓存的日期/时间格式的 ASP 页。

如果身份验证用户没有用户配置文件,IIS 将从系统默认设置中读取区域设置 ID,然后在缓存的区域设置中查找该区域设置。如果找到缓存值,IIS 将用缓存的格式为请求提供服务;否则,IIS 将从 HKEY_USERS/.Default/Control Panel/International 注册表配置单元中的系统默认设置中读取该格式。读取的信息随即被缓存,而 IIS 将显示具有所缓存的日期/时间格式的 ASP 页。

但是,此逻辑存在一个问题。对于每一个请求,IIS 将检查是否为结果区域设置 ID 缓存了日期/时间格式。如果 IIS 找到缓存的格式,就会使用它。如果首次浏览到该页的用户的区域设置 ID 与要用于 ASP 页的预期区域设置 ID 相同,但它们的日期格式不同于要用于 ASP 页的预期日期格式,则会出现问题。在这种情况下,该区域设置 ID 的缓存日期格式是错误的,但仍会将其提供给请求该页的其余用户。

当没有用户实际登录服务器时,IIS 将从上述注册表位置读取日期/时间格式以及其他区域设置,而不像在 Windows NT 4.0 中一样从 Locale.nls 文件中读取。

IIS 5.0(Windows 2000 Service Pack 2 和更高版本)
在 Windows 2000 Service Pack 2 (SP2) 中,默认行为与上述提到的相同。但是,您也可以自定义设置:您可以更改基 OLEAUT 组件,也可以更改 IIS 使其允许在 OLEAUT 中进行此更改。

您可以全局设置 OLEAUT 的注册表项。这不会重写通过使用公开的调用来显式设置该选项的进程。因此,如果您设置以下 IIS 值,则将重写 OLEAUT 设置。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLEAUT
VarConversionLocaleSetting = 0,1,2 (DWORD)
注意:OLEAUT 项可能不存在。如果它不存在,则必须先创建该项。

您也可以设置 IIS 的值,这还会重写 OLEAUT 的任何全局设置。此外,无论是否设置该注册表项,IIS 都将调用此 OLEAUT 应用程序编程接口 (API)。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\InetInfo\Parameters
SetVarConversionLocaleSetting = 0,1,2 (DWORD)
对于 OLEAUT 和 IIS,值 0、1 和 2 是一样的,定义如下: " 0 - 默认行为,如上所述。此格式完全是随机的。它基于设置高速缓存的最后用户或进程。
" 1 - 此格式基于请求这些值(调用 OLEAUT32.dll 文件)的线程的当前标识。在 IIS 中,这是身份验证用户配置文件设置,因为 IIS 在默认情况下模拟身份验证用户。如果身份验证用户的配置文件不存在或者未加载到注册表中,它将默认为 HKEY_USERS\.default\Control Panel\International 注册表配置单元中的系统默认设置。

您可以这样配置 Web 应用程序:请求这些格式的线程上的模拟用户可以始终是相同的用户;这样,您可以建立一致的格式。例如,如果您在 ASP 页上使用匿名访问,则无论谁登录系统,也无论哪一个实际用户请求该页,都将返回相同的日期格式。
" 2 - 此格式被强制为使用系统默认的区域设置。系统默认设置是在重新启动时为计算机设置的。要修改默认系统设置,请选择新的区域设置,然后单击控制面板上的“区域设置”工具中的设置默认值。您必须重新启动计算机,以使此更改生效。在这种情况下,日期格式不是从注册表中读取的,而是从该区域设置的 Locale.nls 文件中读取的。

注意:当更改默认区域设置时,将更改所有区域设置(货币、时间、日期等)。无法修改区域设置中的特定设置。




Peace: 实际配置, 我两个都配置了!

1、控制面板--区域和语言选项--把时间设置为24小时格式。

2、HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\InetInfo\Parameters\
   SetVarConversionLocaleSetting = 0,1,2 (DWORD)

3、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLEAUT\
   VarConversionLocaleSetting = 0,1,2 (DWORD)

4. Reset 服务器

关于 GitHub 导航 部门 反馈

提示:`/home.php`入口数据仅为演示功能,不构成任何交易凭证,也不承担相关风险和责任!

Copyright © 2011-2018 xxxxx.com All rights reserved.

Run:4.351/31.633(ms); 7(sql)/2.889(MB); comm:news/detail; Upd:2024-05-05 17:28:50