React JS中的日期转换

时间:2019-09-20 04:49:01

标签: javascript reactjs

我想显示日期(日期范围)。连字符分隔的来自DB的日期格式为

  

2017年9月21日至2017年9月29日

我想将其转换为格式

  

09/21/2017-09/25/2017

我该如何转换?

6 个答案:

答案 0 :(得分:1)

您可以使用Intl.DateTimeFormat对象。

const dbDate = new Date("Sep 21, 2017")

console.log(new Intl.DateTimeFormat('en-US').format(dbDate))

从MDN文档-

  

Intl.DateTimeFormat对象是以下对象的构造函数:   启用对语言敏感的日期和时间格式。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat

编辑-如果您将两个日期都放在一个字符串中,则可以split()将其删除,然后应用上述方法并进行连接(根据您的要求)。

答案 1 :(得分:1)

您可以使用此功能转换为格式: Your CodeSand

const convert = dateRange =>
    dateRange.split(" - ")
        .map(date => new Intl.DateTimeFormat('en-US').format(new Date(date)))
        .join(" - ")

console.log(convert("Sep 21, 2017 - Sep 29, 2017"));

下面的代码有效,并且仅使用纯JavaScript ES6。

答案 2 :(得分:0)

您的评论中提到的Moment.js在这种情况下对我有很大帮助,特别是对于here

Reactjs的moment.js软件包可以从here安装

这绝对可以解决您的格式问题

答案 3 :(得分:0)

const date = "Sep 21, 2017 - Sep 29, 2017"


const dateConvertor = date => {


    const splited = date.split(" ")

    const dateItems = []
    splited.forEach((item,index) => {
            if(item.indexOf(",") === -1) {
                dateItems.push(item)
            } else {
                dateItems.push(item.slice(0,item.indexOf(",")))
            }
     })

     let convertedDate = "";

     dateItems.forEach((item,index) => {
        if(index === 1 || index === 5) {
            convertedDate += "/"+item+"/"
        } else if (index === 3) {
            convertedDate += " "+ item + " "
        } else {
            convertedDate += item
        }
    })

    return convertedDate
}


dateConvertor(date)

答案 4 :(得分:0)

首先将字符串分开,以便您可以使用它:

const [from, to] = '09/21/2017 - 09/25/2017'.split(' - ');

这将为您提供2个字符串,未按您希望的格式进行格式化,因此您需要进行一些进一步的转换(假设可以使用momentjs):

const [from, to] = '09/21/2017 - 09/25/2017'.split(' - ').map(item => 
moment(item).format('DD-MM-YYYY'));

如果格式上的细微差别可以,您可能不需要片刻就可以像这样使用它

const [from, to] = '09/21/2017 - 09/25/2017'.split(' - ').map(item => 
new Intl.DateTimeFormat('en-US').format(new Date(item), {month: "2-digit", day: "2-digit"}));

注意:我在这里使用的是两位数的参数,它应该提供所提到的日期/月份(从09而不是9),但是至少在某些浏览器中似乎存在问题。

一些不明显的解释: 拆分部分创建一个数组。地图部分会将2个字符串转换为格式化的日期对象。第一部分(=的左侧)是对数组进行解构并为您提供要使用的变量。

答案 5 :(得分:0)

enter image description here ReactJS拥有自己的日期库,即moment date library。它可以使用JavaScript解析,验证,操作和显示日期和时间。

因此,通过运行以下命令,立即使用npm来安装react-moment及其对等依赖项:

  

npm安装时刻

然后导入并在您的Typescript文件中使用

import * as moment from 'moment';
const date = moment("Sep 21, 2017").format('MM/DD/YYYY');
console.log(date); // 09/21/2017