在经典ASP中显示IST(印度标准时间)

时间:2012-07-05 05:36:32

标签: asp-classic timezone

下面是我的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(印度标准时间)。我怎么能在Classic ASP中做到这一点?

3 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

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

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

你需要在一个功能中做到这一点,这个功能还允许印度标准时间不像英国那样(在英国夏令时期间)运行夏令时。所以对于一年中的某些部分,你只需要增加4个半小时。

示例功能:

<% 
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的帮助下)

答案 2 :(得分:0)

在ASP中你有一个名为LOCALE的东西,请检查: http://support.microsoft.com/kb/229690

然而......确定你想要走那条路,我去检查你是否满意: - 货币 - 约会时间 - 并且最后但是没有租用小数分隔符....在某些LOCALES中,分隔符是逗号(而不是美国,它是a。)你可能最终得到SELECT * FROM article WHERE price&gt; 3,14 - &gt;提供参数的大错误(LOCALE可以将PI(3.14)改为3,14这可以避免,但......经典ASP中的国际化非常“简单”......