Esri JavaScript API v.2.6で誤った日付が表示される


8

Esri Javascript APIのバージョン2.6を使用しているサイトで作業しています。いくつかの日付情報を表示する情報ウィンドウがあり、日付はデータベースの日付より1日遅れています。例えば:

ArcMapでフィーチャを特定した場合、返される日付は2007年8月15日です。Restエンドポイントを介して同じ機能をクエリすると、2007/08/15 00:00:00 UTCが返されます。Webアプリケーションで機能を特定すると、返される日付は2007年8月14日です。

javascriptコードでは、日付を次のようにフォーマットしています。

${SALEDT:DateFormat(selector: 'date', fullYear: true)}

これの原因は何ですか?正しい日付を返すにはどうすればよいですか?


<format dateformat = "shortDate" useutc = "true" />
ブラッドネソム

フレックスについても同じ問題がありました。上記は正しいデータを私に与えました。
Brad Nesom、2012

1
@BradNesom flex!= JavaScript
Derek Swingley

@BradNesom昨日のフォーラムの投稿を見ましたが、JavaScriptでは時間のフォーマットオプションが異なります。
ティモシーマイケル

回答:


7

日付フォーマット関数でlocal:trueを指定します。

${SALEDT:DateFormat(selector: 'date', local: true, fullYear: true)}

Mintxの答えは、なぜこれを行う必要があるかを説明しています。情報ウィンドウ/ポップアップコンテンツのフォーマットの詳細については、ヘルプの「 情報ウィンドウコンテンツのフォーマット」を参照してください

編集: ローカルオプションを指定するには、DateFormatではなく、DateStringを使用します。

${SALEDT:DateString(local: true, hideTime: true)}

編集2: modのおかげで、私が最初に参照したMintxを最初に投稿した答えは次のとおりです。

ほぼ正しいので、正しいタイムゾーンを反映するようにコードを変更する必要があります。読み込んでいる機能がUTCタイムスタンプであるため、JavaScriptコードはタイムゾーンに変換されます(米国にいると仮定した場合)。これは2007年8月15日の午前0時より4〜7時間早くなります。なぜそれが1日前に戻ってきているのか。

編集3: カスタムの書式設定関数を使用してこれを行う迅速でハッキーな方法を一緒に投げました:jsfiddle.net/yEkjmこれを行うにはもっと良い方法があるでしょう...私はJSで日付を処理する専門家ではありません。


デレク、ありがとう。私はlocal:trueをフォーマット関数に入れても、1日遅れで日付を取得しています。dojo.require( "dojo.date.locale")があることを確認しました-他に必要なものはありますか?設定/コードがキャッシュされていないことを確認しました。
ティモシーマイケル

1
それは私の間違いです。私の回答ではDateFormatを使用しましたが、DateStringである必要があります。正しい構文を表示するように回答を編集しました。
Derek Swingley、2012

今日の初めにDateStringを使用してみましたが、mm / dd / yyyy形式の日付が必要で、DateStringは「2007年8月14日火曜日」として日付を返します。
ティモシーマイケル

@Tim日付形式を細かく制御したい場合は、DateFormatに戻ります。私のテストでは、日付をUTCとして保存するサービスから取得した機能は、表示されるときに自動的にクライアントのタイムゾーンに変換されます。
Derek Swingley、2012

デレク、ありがとう。あなたは正しい、彼らは私のタイムゾーンに変換されています-それが彼らが1日前にいる理由です。その日付が正しい日付であるため、日付を強制的にUTCとして返す方法はありますか?
ティモシーマイケル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.