2011-08-02 12 views
0

ユースケースは、AJAX呼び出しを使用してミリ秒単位で日付を取得することです。これはJavaScriptで解釈する必要があります。これは、UTCのある時点に対応していました。javascriptの日付(書式設定とタイムゾーン)の処理

ここでは、この日付をPSTで表示する必要があります。これは、ページを開く場所に関係なく、ユーザーにとって唯一の関連するタイムゾーンです。 また、デフォルトロケール文字列ではなく、 'yyyy-mm-dd HH:mm'のような別の形式で表示する必要があります。

誰かが私にそれを行う方法を教えてもらえますか?

答えて

0

新しいDate()関数を使用すると、タイムゾーンはユーザーのタイムゾーン設定によって決まると思います。

var myDateTime = 1312312732923; 
var myDate = new Date(myDateTime); 

var myFormattedDate = myDate.getFullYear() + "-" + (myDate.getMonth()+1) + "-" + myDate.getDay(); 

http://www.w3schools.com/jsref/jsref_obj_date.asp

+0

時間軸の変更機能はJavaScript(利用可能な状態またはライブラリ内)で使用できますか? – kshitij

+0

はい、日付オブジェクトのgetTimezoneOffset()メソッドを使用して違いを判断できます。 http://www.w3schools.com/jsref/jsref_gettimezoneoffset.asp – Maxx

+1

@Maxx:getTimezoneOffset()はタイムゾーンを変更できないため、上記のYesは正しくありません。 "いいえ、getTimezoneOffset()を使用して別のタイムゾーンに表示する必要があります" –

0

Dateオブジェクトを使用します。https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

のJavascriptのDateオブジェクトではなく秒ミリ秒未満で動作しますので、あなたは1000でUNIXタイムスタンプを乗算する必要があります:

var myDate = new Date(unix_timestamp * 1000); 

次に、ローカル固有のDateオブジェクトを使用して、好きなことを行うことができます。

var output = myDate .getHours() + ':'; 
output += myDate .getMinutes() + ':'; 
output += myDate .getSeconds(); 
alert(output); 

EDITああ、ロケールにかかわらず、常にPSTの使用に関する部分を逃しました。 unix_timesampは再びあなたがサーバから取得しているエポック/ UNIXタイムスタンプである:

は、ここでそれを試してみてください:http://jsfiddle.net/46PYZ/

// set to the UTC offset for the target timezone, PST = UTC - 8 
    var target_offset = -8; 

    // create a Date object 
    var myDate = new Date(); 

    // add local time zone offset to get UTC time in msec 
    var utc_milliseconds = (unix_timesamp * 1000) + (myDate .getTimezoneOffset() * 60000); 

    // set the time using the calculated UTC timestamp 
    myDate.setTime(utc_milliseconds + (3600000 * target_offset)); 

    // now build the yyyy-mm-dd HH:mm format 
    var output = myDate.getFullYear() + '-'; 
    var month = myDate.getMonth() + 1; 
    output += (month < 10 ? '0' + month : month) + '-'; 
    output += myDate.getDate() + ' '; 
    var hours = myDate.getHours() + 1; 
    output += (hours < 10 ? '0' + hours : hours) + ':'; 
    var minutes= myDate.getMinutes() + 1; 
    output += (minutes< 10 ? '0' + minutes : minutes); 
+0

javascriptで利用できるtimeZoneの変更機能はありませんか? – kshitij

+0

この回答は、質問には全く言及していません。これは、コンピュータのローカルタイムゾーンに時刻を表示することになります。そして、いいえ、日付オブジェクトにタイムゾーンを設定する方法はありません。 –

+0

ああ、ローカル部分を逃した。私はこれが**の問題に対処していないとは言いません**とにかく、固定ローカル出力を含むように編集されました。あなたはタイムゾーンを設定することはできませんが、タイムゾーンをUTCに変更してから、目標タイムゾーンに戻すことができます:D –

2

が、その後あなたを作成し、UNIXのミリ秒の値を使用して、新しい日付を作成し、プラスPSTにオフセットgetUTC一連の呼び出しを使用してフォーマットされた文字列を返します。

0

JavaScriptは、何かを表示したいタイムゾーンを設定する方法です。私はチャート用のライブラリにFlotを使用しましたが、提案された解決策は、日付を表示するときにgetUTCメソッドを使用することです。つまり、サーバコードはエポックから標準ミリ秒を送信できません(GMT時間が表示されるため)。しかし、サーバを少し調整するだけで、クライアントに日付が正しく表示されます。

、問題について読んhttp://flot.googlecode.com/svn/trunk/API.txtを参照してください、との見出しを探し、「時系列データ」には、

+0

Hans B PUFALの答えは私のものと同じですが、詳細はあまり分かりません。 –

1

Moment.jsは事のこのタイプのためにかなりいいライブラリです。

+0

MomentJS doens'tはサポートしていませんタイムゾーン処理。 [リンク](https://github.com/timrwood/moment-timezone) – hanhp

+0

現在、モーメントタイムゾーンプロジェクトが進行中です。現在、[moment-timezone](http://momentjs.com/timezone/)は既に利用可能です – igorsantos07

関連する問題