4

ログインしているユーザーのローカル タイムゾーンに従って、アプリケーションに日時の値を表示する必要があります。アプリでユーザーのタイムゾーンを自動的に検出し、それに応じて調整されたサーバーの日付と時刻を表示できるようにしたいと考えています。

これを Coldfusion でどのように行うのですか?

Facebook のように、いつでもタイムゾーンを選択するようにユーザーに促さないソリューションを探しています。

ありがとう

4

4 に答える 4

11

CF で書式設定を行う代わりに、標準化された日付表現 (UTF( など) をプッシュし、JavaScript で日付を書式設定します。そうすることで、日付はコンピュータに設定されているタイムゾーンに合わせて書式設定されます。

これにより、ゾーン変更エリアの近くでの間違ったルックアップ、夏時間とそれが観測されていないエリアの対応、旅行者 (「ホーム タイム」と「ローカル タイム」のフォーマット) を回避できます。

追加した:

これにより、現在の時刻が長い形式でダンプされます。それは半ばすぐに使えるものなので、より多くの書式設定オプションについてJavaScript Date オブジェクトのメソッドを調べたいと思うでしょう。

<cfset n = dateconvert("local2utc",now())>
<script>
 d = new Date();
 d.setUTCFullYear(#dateformat(n, "yyyy")#);
 d.setUTCMonth(#dateformat(n, "m")#);
 d.setUTCDate(#dateformat(n, "d")#);
 d.setUTCHours(#timeformat(n, "H")#);
 d.setUTCMinutes(#timeformat(n, "m")#);
 document.write(d.toLocaleString());
</script>
于 2010-11-24T16:13:32.710 に答える
6

ColdFusion はサーバー側の言語です。したがって、クライアントのタイムゾーンを直接決定することはできません。

クライアント側で JavaSript を使用し、timezoneoffset を見つけて、Ajax リクエスト経由で ColdFusion に送信できます。

JavaScript:

var clienttime = new Date();
var time = clienttime.getTimezoneOffset()/60;

次に、サーバー側でオフセットを使用して、ユーザーに表示する日付を計算できます。

クライアント IP を使用してクライアントの国を検索することもできますが、外部サービスを使用して特定の IP の国を取得する必要があり、夏時間や国ごとの複数のタイムゾーンなどの問題に対処する必要があります。

于 2010-11-24T16:26:27.327 に答える
1

ログイン プロファイルの一部としてタイムゾーンを指定するようにユーザーに依頼した方が、より迅速かつ正確になります。一度設定すると忘れます。

それ以外の場合は、IP アドレスの検索を行い、その IP アドレスがどこに基づいているかを判断し、タイムゾーンを判断して、それに応じて時間を表示することを検討しています。情報を Cookie やセッション変数に保存したとしても、ユーザーに現在のタイムゾーンを尋ねるだけではちょっと面倒です。

于 2010-11-24T15:30:26.723 に答える
-1

cfwheels.org を使用していて、ユーザーが「昨日」や「10 分前」を表示することを気にしない場合は、TimeAgoInWords() が必要です。

于 2016-08-07T08:43:58.157 に答える