-1

使用するすべてを強制的Browserに表示するにはどうすればよいですか.渡すように.そうする方法はありますか??date objectsSpecific TimezoneEurope/London

アップデート

ここで私が望むのは、クライアントのマシンではなく、特定のタイムゾーンに従ってすべてのJquery Datepickerの日付と時刻を開くことです。

4

2 に答える 2

1

Moment.jsは、これを実現するのに役立つ優れたライブラリです。

于 2013-05-31T12:15:50.430 に答える
1

タイムゾーン オフセットを「設定」することはできません。これは、システム設定に基づく読み取り専用のプロパティです。

クライアントのタイムゾーン オフセットを追加し、必要なオフセットを追加するだけで、任意のタイムゾーン オフセットの時刻と日付の値を生成できます (javascript Date オブジェクトのタイムゾーン オフセットは通常の値とは反対の意味を持つため、1 つを減算するのではなく両方を加算することに注意してください)。もう一方を追加します)。

例えば

// Provide offsetInMintes to add to UTC to get required time,
// e.g. Nepal Standard Time is UTC +05:45 -> +345 minutes
function generateOffsetTime(offsetInMinutes) {
  function z(n){return (n<10? '0' : '') + n;}
  var d = new Date();
  d.setMinutes(d.getMinutes() + d.getTimezoneOffset() + offsetInMinutes);
  return [z(d.getHours()),z(d.getMinutes()),z(d.getSeconds())].join(':');
}

alert('The time in Nepal is ' + generateOffsetTime(345));

編集

Date.prototypeに独自のメソッドを追加できます。

Date.prototype.setOffset = function(offsetInMinutes, offsetName) {
  this._offsetInMinutes = offsetInMinutes;
  this._offsetName = offsetName;
};

Date.prototype.getOffsetFullDate = (function() {
  var months = ('January February March April May June July ' +
               'August September October November December').split(' ');
  var days = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'.split(' ');

  return function() {
    var d = new Date(+this);
    d.setMinutes(d.getMinutes() + d.getTimezoneOffset() + this._offsetInMinutes);
    return days[d.getDay()] + ' ' + d.getDate() + ' ' + months[d.getMonth()] + 
           ', ' + this.getFullYear();  
  }

}());

Date.prototype.getOffsetTime = (function() {
  function z(n){return (n<10? '0' : '') + n;}

  return function() {
    var d = new Date(+this);
    d.setMinutes(d.getMinutes() + d.getTimezoneOffset() + this._offsetInMinutes);
    return z(d.getHours()) + ':' + z(d.getMinutes()) + ':' +
           z(d.getSeconds()) + ' ' + this._offsetName;  
  }  
}());

var d = new Date();
d.setOffset(345, 'NST')
console.log(d.getOffsetFullDate() + ' ' + d.getOffsetTime());

これにより、日付オブジェクトの元の時間値が保持されることに注意してください。値が取得されると値が調整されるため、タイムゾーンを変更して同じ日付オブジェクトの異なる値を取得できるため、次のように続行できます。

d.setOffset(600, 'AEST');
console.log(d.getOffsetFullDate() + ' ' + d.getOffsetTime());

d.setOffset(630, 'LHI');
console.log(d.getOffsetFullDate() + ' ' + d.getOffsetTime());

しかし、Date を拡張するのではなく、組み込みの Date を活用する独自の日付コンストラクターを作成する方が良いと思います。

于 2013-05-31T12:25:45.763 に答える