2017-02-14 8 views
4
<Text style={s.date}>{ new Date(this.props.order.ordered_at).toLocaleDateString('en-US', { day: '2-digit', month: 'short' }) }</Text> 
<Text style={s.time}>({ new Date(this.props.order.ordered_at).toLocaleTimeString('en-US', { hour: '2-digit', minute:'2-digit', hour12: true }) })</Text> 

デバッグ出力をしない場合はJSリモートデバッグがオフリアクト - ネイティブは異なった反応をリモートで

02/13/17 (23:51:31) 
02/13/17 (23:48:07) 

出力されたときにJSリモートデバッグはない、これを原因とどのように何

Feb 13 (11:51 PM) 
Feb 13 (11:48 PM) 

上にある場合私が直します?

+0

で述べたように不整合が生じることができたこと、環境のJSに盲目的に頼る[公式ドキュメント]を読みます(詳細は、https://facebook.github.io/react-native/docs/javascript-environment.html)を参照してください。また、JS date APIの代わりに[moment](https://momentjs.com/)を使用することもできます。 – Xeijp

+0

MomentJsを使う方が良い – Ataomega

答えて

7
import moment from 'moment'; 

<Text style={s.date}>{ moment(new Date(this.props.order.ordered_at)).format('ll') }</Text> 
<Text style={s.time}>{ moment(new Date(this.props.order.ordered_at)).format('LT') }</Text> 

いつもDate()の方法がうまくいかないのはなぜ一貫

Feb 13, 2017 (11:51 PM) 
Feb 13, 2017 (11:48 PM) 

をもたらすのだろうか?ネイティブに反応使用する場合

JavaScriptがランタイムは、次の2つの環境でJavaScriptコードを実行することになるだろう:ネイティブは、JavaScriptCoreにおけるを使用していますリアクトのiOSシミュレータやデバイス、Androidのエミュレータやデバイスで

  • ましたSafariを動かすJavaScriptエンジンです。 iOSの場合JSCはiOSアプリケーションで書き込み可能な 実行可能メモリがないためJITを使用しません。
  • Chromeデバッグを使用すると、Chrome内のすべてのJavaScriptコードが実行され、WebSocket経由でネイティブコードと通信します。あなたは でV8を使用しています。

どちらの環境も非常に似ていますが、 の不一致が発生することがあります。将来は他のJS エンジンを試してみる予定ですので、実行時間については の仕様に頼らないようにしてください。

コメントで述べたように、それはmomentJSの代わりに使用することをお勧めしますdocs

+0

date-fnsは、momenjsのはるかに良い選択肢です。 https://bundlephobia.com/[email protected] vs https://bundlephobia.com/[email protected]を参照してください。 – MA1

関連する問題