UTCオフセットに基づいて現在の日付を取得するにはどうすればよいですか?たとえば、オーストラリアのUTCオフセットは、すでに5月24日のUTC + 10:00です。JavaScript - UTCオフセットを使用して現在の日付を取得
UTCの日付と時間を取得できますが、UTCオフセットを考慮したDateメソッドは見つかりません。 Moment.jsを使用して
UTCオフセットに基づいて現在の日付を取得するにはどうすればよいですか?たとえば、オーストラリアのUTCオフセットは、すでに5月24日のUTC + 10:00です。JavaScript - UTCオフセットを使用して現在の日付を取得
UTCの日付と時間を取得できますが、UTCオフセットを考慮したDateメソッドは見つかりません。 Moment.jsを使用して
あなたはオフセット(この場合は10時間)、この機能を使用したら:あなたが使用することになり、あなたの場合は
function getDateWithUTCOffset(inputTzOffset){
var now = new Date(); // get the current time
var currentTzOffset = -now.getTimezoneOffset()/60 // in hours, i.e. -4 in NY
var deltaTzOffset = inputTzOffset - currentTzOffset; // timezone diff
var nowTimestamp = now.getTime(); // get the number of milliseconds since unix epoch
var deltaTzOffsetMilli = deltaTzOffset * 1000 * 60 * 60; // convert hours to milliseconds (tzOffsetMilli*1000*60*60)
var outputDate = new Date(nowTimestamp + deltaTzOffsetMilli) // your new Date object with the timezone offset applied.
return outputDate;
}
:
をvar timeInAustralia = getDateWithUTCOffset(10);
これはDate
を返します。オブジェクト。あなたはまだあなたの好みに日付を書式設定する必要があります。
私は@Fraxに同意します.Momentはあなたのプロジェクトに依存関係を追加しても構いません。あなたは10のようにオフセットしているので、もし
幸運
とMoment Timezoneそれは非常に簡単です:
moment().tz("Australia/Sydney").format()
Dateオブジェクトは、UTCのメソッドを持っている:00あなたは、単にUTC時間にそれを適用し、その結果UTC値を読み取ることができます。オフセットは、時および分として適用することも、単一の値に変換して適用することもできます。
/* Return a date in yyyy-mm-dd format for the provided offset
** @param {string} offset - offset from GMT in format +/-hh:mm
** - default sign is +, default offset is 00:00
** @returns {string} date at pffset in format yyyy-mm-dd
*/
function dateAtOffset(offset){
function z(n){return (n<10?'0':'') + n}
var d = new Date();
var sign = /^\-/.test(offset)? -1 : +1;
offset = offset.match(/\d\d/g) || [0,0];
d.setUTCMinutes(d.getUTCMinutes() + sign*(offset[0]*60 + offset[1]*1))
return d.getUTCFullYear() + '-' + z(d.getUTCMonth() + 1) + '-' + z(d.getUTCDate());
}
var offset = '+10:00';
document.write('The date at GMT' + offset + ' is: ' + dateAtOffset(offset));
また、オフセットと読み、 "ローカル" の値の日付調整することができます。しかし
function timeAtOffset(offset) {
var d = new Date();
var sign = /^\-/.test(offset)? -1 : 1;
offset = offset.match(/\d\d/g) || [0,0];
d.setMinutes(d.getMinutes() + d.getTimezoneOffset() + sign*(offset[0]*60 + offset[1]*1));
return d;
}
var offset = '-04:00';
document.write('Time at GMT' + offset + ' is: ' + timeAtOffset(offset))
注意をそのデフォルトのtoString現地時間帯を報告しますオフセットは調整されていないので、そのようなオブジェクトを使用するときは注意してください。
もっと簡単な方法は、おそらくmoment.jsを使用することです。http://momentjs.com/timezone/ – Frax
オーストラリアとその領土には、+05:00〜+ 11:00の範囲のいくつかのタイムゾーンがあります。 – RobG