1

下面是我的 ASP(不是 ASP.NET)代码:

<%
days = day(now)
    if len(days) <> 2 then 
        days = "0"&days 
    END IF
    months = month(now)
    if len(months) <> 2 then 
        months ="0"&months
    end if
    min = dateadd("n",2,now)
    hr = dateadd("h",-5,now)
    Hrs = hour(hr)
    if len(Hrs) <> 2 then 
        Hrs ="0"&Hrs
    end if
    Mins = minute(min)
    if len(Mins) <> 2 then 
        Mins ="0"&Mins
    end if
    Secs = second(now)
    if len(Secs) <> 2 then 
        Secs ="0"&Secs
    end if
    datess = year(now)&"-"&months&"-"&days&"T"&Hrs&":"&Mins&":"&Secs

    response.write(datess) %>

输出是服务器时间(服务器托管在英国)。现在我想将其转换为 IST(印度标准时间)。如何在经典 ASP 中做到这一点?

4

3 回答 3

1

ASP VBScript 不理解时区的概念,即当前服务器时间是什么。JScript ASP 可以,幸运的是,您可以在 ASP 中混合和匹配您的脚本语言。

这将使用 JScript 将 UTC 日期和时间转换为 VBScript 可以理解和操作的格式:

<script  language="javascript" runat="server">

    var od = new Date();
    var nd = od;
    var s = nd.getUTCDate() + "/";
    s += (nd.getUTCMonth() + 1) + "/";
    s += nd.getUTCFullYear() + " ";
    s += (nd.getUTCHours()) + ":";
    s += nd.getUTCMinutes() + ":";
    s += nd.getUTCSeconds();
    datUTC = s;

</script>
<% 

Response.Write(FormatDateTime(datUTC, 3))

%>

有了 UTC 后,您就可以应用自己的规则将其转换为可预测的 IST。

于 2012-07-05T12:15:35.497 回答
0

您可以将正确的小时数 (GMT + 5:30) 添加到当前的英国时间。

DateAdd("n",330,NOW()) --adds 5 1/2 hours to current time

您需要在一个函数中执行此操作,该函数还允许印度标准时间不像英国那样运行夏令时(在英国夏季时间)。因此,对于一年中的某些部分,您只需增加 4 1/2 小时。

示例函数:

<% 
offset = 330 '5 1/2 hours in minutes

' tell us what date you want 
currentUkDateTime = NOW()

' find first Sunday in April 
for i = 1 to 7 
    if weekday("4/" & i & "/" & year(d))=1 then 
        startDST = cdate("4/" & i & "/" & year(d)) 
    end if 
next 

' find last Sunday in October 
for i = 31 to 25 step -1 
    if weekday("10/" & i & "/" & year(d))=1 then 
        endDST = cdate("10/" & i & "/" & year(d)) 
    end if 
next 

' subtract hour from offset if within DST 
if cdate(od) >= startDST and cdate(od) < endDST then 
    offset = offset - 1 
end if 

currentISTDateTime = dateadd("n", offset, currentUkDateTime) 

Response.Write("Current = " & currentUkDateTime & "<Br>UTC = " & currentISTDateTime ) 
%>

(在classicasp.aspfaq.com的帮助下)

于 2012-07-05T09:23:06.137 回答
0

在 ASP 中有一个叫做 LOCALE 的东西,检查一下:http: //support.microsoft.com/kb/229690

但是...确保您想走那条路,我去检查您是否满意:-货币-日期时间-最后但不租用小数点分隔符....在某些语言环境中,分隔符是逗号(如与美国相反,它是一个。)您最终可能会得到 SELECT * FROM article WHERE price > 3,14 -> 提供的参数的大错误(LOCALE 可以将 PI(3.14)更改为 3,14,这可以避免,但是。 .. 经典 ASP 中的国际化非常“简单”...

于 2012-07-06T19:37:27.193 回答