2017-11-04 1 views
0

UTCまたはモーメントJSオブジェクトまたはDate()オブジェクトまたはdatetimeを含むプレーンストリングのタイプ/フォーマットの入力変数を検出または変換できる方法はありますかモーメントJSオブジェクトの一般的な形式ですか?任意のjavascript datetime変数をmoment JSオブジェクトに変換するには

例:

"1509760983", 
Date 2017-10-10T02:20:10.570Z, 
Object { _isAMomentObject: true, _isUTC: false, _locale: Object, _d: Date 2017-11-04T02:17:33.747Z, _z: null }, 
"Sat, 04 Nov 2017 02:03:03 GMT", 
"2017-11-04T02:20:14.896Z" 

マイハック:

var offset = moment().utcOffset(); 
momentObj = moment(variable).utcOffset(offset); 

私は、変数がある場合を除いて、データ内の任意の「ずれ」なしモーメントJSへの他のすべての形式を変換することができました既にDate()オブジェクトです。

var offset = moment().utcOffset(); 
momentObj = (variable instanceof Date) ? moment(variable) : moment(variable).utcOffset(offset); 

注:Date()オブジェクトは、ブラウザのみで生成することができますので、現地のタイムゾーンに時間を変換するためにオフセットを追加する必要がないので

このソリューションには、より良い(フェールセーフ)アプローチがありますか?

+0

['moment.utc()'](http://momentjs.com/docs/#/parsing/utc/)を見てください:_デフォルトでは、現時点で解析と表示が行われます。 UTCで瞬間を解析したり表示したい場合は、 'moment()'の代わりに 'moment.utc()'を使うことができます。_ – VincenzoC

+0

@VincenzoC req。どんな時刻形式であっても、現地時間ですべての入力 'datetime'を表示することです。それがオフセットを追加した理由です。 – Mikki

+0

私はあなたがしようとしていることを完全に得ていません。スニペットやフィドルを提供できますか?とにかくモーメントオブジェクトをローカルモード(デフォルト)に変換する['local()'](http://momentjs.com/docs/#/manipulating/local/)関数を見てください。 [Local vs UTC vs Offset](http://momentjs.com/guides/#/parsing/local-utc-zone/)ガイドも参照してください。 – VincenzoC

答えて

1

javascriptの日付「Z」の最後の文字は、オブジェクトのタイムゾーンがUTC(Z時間、ズールー時間)に設定されていることを示しています。あなたは正しいタイムゾーンを得ています。タイムゾーンをローカルタイムゾーンに変換する場合は、moment timezone pluginとmoment.jsを使用する必要があります。

次に、あなたはどうなる:

momentObj = moment(variable).tz(moment.tz.guess()); 

を/すべての瞬間には、ユーザーのタイムゾーンにオブジェクトを設定変換すること。

関連する問題