私は、ブラウザのタイムゾーンを検出し、タイムゾーンをブラウザが検出した値に設定するようにユーザーに要求するアプリケーションに取り組んでいます。
そこで、ActiveSupport::TimeZone::MAPPING に存在するすべてのキーをすべてリストする選択ドロップダウンを作成しました。
現在、タイムゾーンが (GMT-08:00) Pacific/Pitcairn のユーザーがいます。ActiveSupport::TimeZone には存在しない値が多数あります。
そのような値をどのように処理すればよいですか。Railsでサポートされている値を送信すると主張する多くのjsファイルをチェックしましたが、どれも機能していないようです。
Windows マシンでタイムゾーンを UTC-08:00 に設定すると、JavaScript プラグインがタイム ゾーンを検出し、America/Los Angeles の値を送信します。
Windows マシンで DST タイミングを許可しないチェック ボックスがあります。したがって、この場合、タイム ゾーンとして UTC-08:00 を使用し、DST ボックスのチェックを外して、値 Pacific/Pitcairn を取得しています。
そのため、America/Los Angeles と Pacific/Pitcairn の 2 つの異なる値の前に / を一致させることはできません。
名前を無視してUTCオフセットで値を設定しても役に立ちません。(UTC-08:00) 太平洋時間 (米国およびカナダ) と (UTC-08:00) のティファナの 2 つの個別の値があります。では、どの値を設定するかをどのように決定すればよいでしょうか。
showTimeZoneInfo: function(member_time_zone, timeZoneInfo, invertTZHash){
var tzValue = jQuery().get_timezone({'defaultvalue' : 'Etc/UTC'});
var railsOffset = TimeZoneFlash.extractOffset(timeZoneInfo[member_time_zone]);
var browserOffset = TimeZoneUtils.zoneWithoutDST();
if ( railsOffset != browserOffset) {
jQuery(".time_zone_text").text(browserOffset + " " + invertTZHash[tzValue]);
jQuery('.cjs_display_time_zone').removeClass('hide');
}
}
ここで、invertTZHash に Pacific/Pitcairn が含まれていないケースがあります。そして、未定義の値を返します。
ブラウザのタイムゾーンとは異なるタイムゾーンにいるユーザー向けの警告ボックスの構築に取り組んでいます。Intl.DateTimeFormat().resolved.timeZone でさえ、ほとんどのトラフィックは IE および FF ブラウザーからのものであるため、役に立ちません。