0

アプリケーションが常にAmerica/Chicagoタイムゾーンの時間を使用する必要がある特別なユースケースがあります。そのため、Moment のデフォルトのタイムゾーンを に設定しましmoment.tz.setDefault("America/Chicago");た。

このセットアップでは、すべての日時入力をクライアントからサーバーにAmerica/Chicagoタイムゾーンで js 形式で送信しますMM/DD/YYYY h:mm A。また、クライアントが時刻フィールドを要求するたびに、サーバーは時刻をAmerica/Chicagoタイムゾーンと同じ形式で返します。

サーバーから返されたこの日時の値を解析し、現在のAmerica/Chicago時刻と比較する必要がある場合があります。私はこれを試しました、

moment.tz.setDefault("America/Chicago");

let now = moment();

// serverResponse is America/Chicago datetime string in format MM/DD/YYYY h:mm A

let serverResponseMoment = moment(serverResponse);

// The above statement is where I am facing issue. Since the users could be from
// anywhere, moment(serverResponse) will be assuming the serverResponse string to
// be of the local timezone as there is no offset part attached to the string.

return now.isBefore(serverResponseMoment);

また試した

let serverResponseMoment = moment.tz(serverResponse,"America/Chicago");

// The above statement assumes the serverResponse to be in UTC and give me an "America/Chicago"
// date-time after conversion

私も試しmoment.utc(serverResponse)ました。最後の条件チェックが実行されると、すべての解析が失敗します。

私が欲しいのは、すでに設定されているデフォルトのタイムゾーンで、serverResponse基になる DateTime として my を保持する瞬間のインスタンスです。

または、これを行うステートメント

Hey Moment, serverResponse is already in "America/Chicago" timezone, you don't have to make any sort of timezone assumptions. Just parse it and return an instance of yourself

何か案は?

ありがとう

4

1 に答える 1