2013-08-06 12 views
5

私はユーザーのタイムゾーンを読み取ってユーザーに応じて時間を表示するスクリプトを用意しています。タイムゾーンの省略形を表示するにはどうすればよいですか?Date.jsでタイムゾーンの略語を表示

私はゲームサイトを持っています。投稿には、「私たちは7時に生きるでしょう」と書いています。世界中のユーザーが私たちのブログを読んで、ライブを見たいと思っています。私は、ユーザーのタイムゾーンを読み取る予定の次のスクリプトを持っており、ユーザーがどこに住んでいるかに応じて時刻を表示しています。ユーザーは時間が自分のタイムゾーンに基づいていることを知っているので

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <title>Localtime</title> 
    </head> 
    <body> 
    We'll be playing live at <span class="localtime">7:00PM EDT</span> 
    <script src="//cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js"></script> 
    <script 
     var els = document.getElementsByClassName('localtime'); 
     for (var i = 0, l = els.length; i < l; i++) 
     els[i].innerHTML = 
      Date.parse(els[i].innerHTML).toLocaleString(); 
    </script> 
    </body> 
</html> 

は、どのように私は、時間の横にユーザー固有の時間帯省略形を表示していますか?

答えて

3

いくつかのこと:

  • date.js has been abandoned。あなたはおそらくそれを使用しないでください。
  • タイムゾーンの略語はあいまいです。 this listを参照してください。
  • たとえば、「CST」として出力すると、「中央標準時」、「中国標準時」または「キューバ標準時」を意味する可能性があります。
  • 私の知る限り、現地時間帯の省略形を示すライブラリはありません。
  • ゾーン情報は通常Date().toString()と表示されますが、ブラウザによって大きく異なります。それは、省略形として、またはタイムゾーンのローカライズされたフルネームまたはIDとして出現するか、まったく出現しない可能性があります。
  • オフセットを表示するほうがよいでしょう。それは少なくとも標準化されるだろう。生のJavaScriptを使用するか、moment.jsでさらに簡単にできます。
  • 入力したコードでは入力日がないため、特定のタイムゾーンにロックするのが困難になります。 「EDT」は、すべてのブラウザで日付パーサが認識できるものであり、それは真実ではないと想定しています。
  • 最善の方法は、正確な時刻(UTCまたはオフセットのいずれか)から開始し、正しい形式にレンダリングすることです。しかしながら

    https://github.com/abritinthebay/datejs/

    :ここで

    var m = moment("2013-08-06T19:00:00-04:00"); // this is 7PM EDT 
    var s = m.format("HH:mm ([UTC]ZZ)"); // example: "16:00 (UTC-0700)" 
    
2

更新DateJSコアコードのバージョン(および将来のオープンバグを修正する)入手可能(moment.js有する)、例えばあなたはちょうどDateJSのフォーマットまたはtoStringメソッドを探しているように思えます。例えば

var tmp = Date.parse("2013-09-05T22:40:00Z"); 
var time = tmp.format("g:i A T"); 

これは文字列で、「3時40分PM PDTを」時間を残して

DateJSがオフセットに基づいて検索を実行し、これは、内部ブラウ​​ザの問題に依存しません(ブラウザごとに変更されることはありません)。

0

bigeasyのTimezoneは、@ matt-johnsonが暗示しているように、タイムゾーンの省略形を提供する解決策です。略語are not standardizedです。

$ npm install timezone 
$ node 
> tz = require('timezone'); 
[Function] 
> us = tz(require("timezone/America")); 
[Function] 
> us(us("2013-12-11 03:00"), "America/Detroit", "%Z") 
'EST' 
> us(us("2013-12-11 03:00"), "America/Los_Angeles", "%Z") 
'PST' 
> us(us("2013-10-11 03:00"), "America/Los_Angeles", "%Z") 
'PDT' 

Moment.jsentry point "hook" for time zone abbreviationsを持っていますが、私の知る限りでは、このを活用して、ライブラリがない:Node.jsのでタイムゾーンを試すの

例(walk-throughに続きます)まだ。

0

トライ瞬間のタイムゾーン、 http://momentjs.com/timezone/docs/#/zone-object/abbr/

<script> 
    moment().tz("America/Los_Angeles").zoneAbbr(); 
</script> 

moment.js、瞬間-timezone.jsとモーメント - タイムゾーン - data.js

が含まれています
関連する問題