我正在尝试在React Native中格式化日期字符串.
例:2016-01-04 10:34:23
以下是我正在使用的代码.
var date = new Date("2016-01-04 10:34:23"); console.log(date);
我的问题是,当我在iPhone 6S上模拟它时,它会打印出Mon Jan 04 2016 10:34:23 GMT+0530 (IST)
而没有任何问题.但是,如果我尝试iPhone 5S,它什么都不打印.如果你试图通过使用像date.getMonth()
它打印的方法获得月份"NaN"
.
为什么是这样?解决方法是什么?
React Native的美妙之处在于它支持许多JS Librarieis,如Moment.js.使用moment.js将是一种更好/更简单的方法来处理日期/时间而不是从头开始编码
只需在终端中运行:
npm install moment --save
在你的React Native js页面中:
import Moment from 'moment'; render(){ Moment.locale('en'); var dt = '2016-05-02T00:00:00'; return({Moment(dt).format('d MMM')} ) //basically you can do all sorts of the formatting and others }
您可以在这里查看moment.js官方文档 https://momentjs.com/docs/
没有必要包含一个庞大的库,如Moment.js来解决这个简单的问题.
您面临的问题不是格式化,而是解析.
正如John Shammas在另一个答案中提到的那样,Date
构造函数(和Date.parse
)对输入很挑剔.您2016-01-04 10:34:23
可以在一个JavaScript实现中工作,但不一定在另一个中实现.
根据ECMAScript 5.1的规范,Date.parse
支持(简化)ISO 8601.这是个好消息,因为你的日期已经非常像ISO 8601了.
您所要做的就是稍微更改输入格式.SWAP的空间T
:2016-01-04T10:34:23
; 并且可选地添加时区(2016-01-04T10:34:23+01:00
),否则假设为UTC.