2017-02-14 3 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 удаленная отладка выключенаReact-Native реагирует по-разному, когда не отладки удаленно

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

Выход при JS удаленной отладки на

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

Что вызывает это и как Я чиню это?

+0

Прочитайте [официальный документ] (https://facebook.github.io/react-native/docs/javascript-environment.html) для получения дополнительной информации, он объяснил это очень хорошо. В качестве альтернативы вы можете использовать [момент] (https://momentjs.com/) вместо API дат JS. – 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> 

будет последовательно давать

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

Почему не обычный Date() способ работы?

JavaScript Продолжительность При использовании Реагировать Native, вы собираетесь быть запущен код JavaScript в двух средах:

  • КСН тренажеров и устройств, Android эмуляторы и устройств Реагировать Native использует JavaScriptCore, которые это движок JavaScript, который поддерживает Safari. На iOS JSC не использует JIT из-за отсутствия записываемой исполняемой памяти в приложениях iOS.
  • При использовании отладки Chrome он запускает весь код JavaScript внутри самого Chrome и общается с собственным кодом через WebSocket. Итак, вы используете .

Хотя обе среды очень похожи, вы можете столкнуться с некоторыми несоответствиями . Вероятно, в будущем мы будем экспериментировать с другими двигателями JS , поэтому лучше избегать использования опций в любой среде исполнения.

Итак, как уже упоминалось в комментариях, то лучше использовать momentJS вместо того, чтобы полагаться слепо на JS окружающей среды делает, что может привести к противоречиям, как указано в docs

+0

date-fns - лучшая альтернатива momenjs. см. https://bundlephobia.com/[email protected] vs https://bundlephobia.com/[email protected] – MA1