2017-07-21 18 views
0

React-Nativeアプリには、日付用と時間用の2つのフィールドがあります。 dateフィールドは 'YYYY-MM-DD'の形式の値を返し、timeフィールドは 'hh:mm A'という形式の値を返します。フォーマットの変換には瞬間を使用しています。それは私のシミュレータAndroidとiOSの両方で正常に動作します React Nativeの日付と時刻を連結して返す '無効な日付'

moment(date+ " "+time).format("YYYY-MM-DDTHH:mm:ss") 
、だから、日付と私が使用した時間を連結するために、:最後のAPI呼び出しは、形式「MM YYYY-MM-DDTHH」は単一のエントリでなされるべきですデバイス上でデバッグするときにも、両方のビルドを取得するとすぐに返されます。

無効な日付です。

EDIT:moment(date + " " + value).format();をしようとしましたが、また、ビルドで '無効な日付' を返します。 フォーマットを指定せずにDatenew Date(date+ " " + time);を直接使ってみましたが、ビルドで「無効な日付」も返されました。

+0

( "YYYY-MM-DDTHH:mm:ssは")'この '(" YYYY-MM-DDにHH:mm:ss ")'? –

+0

@RizalSidikこれは私のAPI呼び出しで使用するはずのフォーマットです。しかし、私はビルドで各値を警告してみたところ、 'moment(date +" "+ value).format();'を与えても、 '無効な日付'を取得していることがわかりました。 –

答えて

1

入力がISO 8601でもRFC 2822形式でもないため、moment(String, String)を使用する必要があります。

moment(String)としての状態:

文字列から瞬間を作成する場合、文字列は、既知のISO 8601formatsと一致した場合、我々は最初のチェック文字列がにドロップする前にRFC 2822日付時刻の形式と一致した場合、我々はその後チェック既知の形式が見つからない場合は、new Date(string)から削除してください。

ISO 8601文字列以外のものを解析しても一貫性のある結果を得るには、String + Formatを使用する必要があります。

あなたが使用することができますあなたの場合:

あなたはこの1 `変更した場合にどのように
moment(date+ " "+time, "YYYY-MM-DD hh:mm a").format("YYYY-MM-DDTHH:mm:ss") 
+0

ありがとうございました!それは魅力のように働く。しかし、なぜそれがエミュレータではなくビルドでのみ発生するのか知っていますか? –

+0

@DanPhilipよろしくお願いします!なぜそれがビルドでのみ発生するのか正確にはわかりません。おそらく、文字列の解析は環境に依存しているので、[リンクされたドキュメント](http://momentjs.com/docs/#/parsing/string/)に記載されています。 – VincenzoC

+0

もう一度ありがとう! –

関連する問題