当前位置:  开发笔记 > 编程语言 > 正文

在React Native中格式化日期字符串

如何解决《在ReactNative中格式化日期字符串》经验,为你挑选了2个好方法。

我正在尝试在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".

为什么是这样?解决方法是什么?



1> 小智..:

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/


对于常见的用法来说,时刻很棒,但非常大,不幸的是不是模块化的,所以你必须导入整个包才能使用它.请考虑使用date-fns(https://date-fns.org/).它是模块化的,所以你可以从'date-fns'和`format(new Date(),'MMMM Do,YYYY H:mma')`等'导入{format}.

2> pimmhogeling..:

没有必要包含一个庞大的库,如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.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有