ASP-vbscriptでのRSSのRFC-2822日付フォーマット

このテキストは、javascript、vb(dumb me)、IIS、RSS、HTTP、TCP、IP、およびその他のロシア語以外の単語を使用するための呼び出しではありませんが、特定の問題に対する特定のソリューションについて説明しています。



先日、YandexニュースのRSSをASP(vbscript)のサイトにねじ込む必要がありました。 一般に、すべては単純でしたが、予期せずに突然、つまずきました-日付の書式設定。 日付(pubDate)はRFC-2822形式である必要があり、Yandexの要件は、時刻がUTCではなく、リソースの場所に対応する正しいタイムゾーンであることを示しています。 例: Fri、25 Dec 2009 09:24:44 -0300 。 vbscript自体が日付の操作方法を実際に知らないことはよく知られています。1つ半の欠陥のあるフォーマットを知っており、ローカリゼーションを悪用しようと気をつけています日付およびその他すべての形式、その後アプリケーションはクラッシュしました)。 アナグマの熊サービスを使用せずに日付をフォーマットする必要があり、適切なコードをすばやく掘り下げて実質的な作業に進むという理由でインターネットに行きました。

今すぐ!

時々(正直なところ、かなり頻繁に)起こるので、コードは見つかりましたが、見つかりませんでした。 日付をフォーマットしました(ロケール1033を特定する必要がありました)が、vbscriptでホストのタイムゾーンを取得できないことが判明しました。 愚か。 まあ、全然。 インターネット上のNarylは2通りあります。1つはより美しい方法です。1つ目はWMIを使用し、2つ目はローカルサーバーへのHTTP要求を使用します。 倒錯は自然です。 動作しなくなった場合は、破損した理由を探すことで苦しみます。 また、2つのフローティングアンカーのように速度が低下します。 要するに、あなたはそれをすることはできません、それがすべてです。



最後に、トリッキーな方法が見つかりました(実際、多くの人がアドバイスします。たとえば、 http//ajaxandxml.blogspot.com/2006/02/computing-server-time-zone-difference.html ):vbscriptのページへの挿入javascriptでは、桁違いに賢く、何らかの方法で日付を処理する方法を知っています。 これによりタイムゾーン(タイムゾーン)の問題は解決しましたが、まだ既成のソリューションはなく、いくつかの行を構成する必要がありました。 次に、非整数のタイムゾーンで作業するために少し掘り下げます(そういうものがあると言います)。

これが判明しました:



 <%@ LANGUAGE="VBSCRIPT" %> <SCRIPT Language="JavaScript" Runat="Server"> function zeroPad(num, width) { num = num.toString(); while (num.length < width) { num = "0" + num; } return num; } function fmtRssDate(dUTC){ var offset = -((new Date()).getTimezoneOffset()); var offsetH = Math.floor(Math.abs(offset) / 60); var offsetM = Math.abs(offset) - offsetH * 60; var sOffset = ((offset >= 0) ? "+" : "-") + zeroPad(offsetH, 2) + zeroPad(offsetM, 2); var localTime = new Date(dUTC - offset * 60000); var sLocalTimeWithOffset = localTime.toUTCString(); sLocalTimeWithOffset = sLocalTimeWithOffset.substring(0, sLocalTimeWithOffset.indexOf("UTC")); sLocalTimeWithOffset += sOffset; return sLocalTimeWithOffset; } </SCRIPT> <%=fmtRssDate(now())%>
      
      





それだけです



All Articles