我想显示日期(日期范围)。连字符分隔的来自DB的日期格式为
2017年9月21日至2017年9月29日
我想将其转换为格式
09/21/2017-09/25/2017
我该如何转换?
答案 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)
答案 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)
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