对于学校,我需要用RDW API做一个应用程序。 (RDW是注册所有汽车的荷兰政府实例)。
我得到的部分回复是这样的:
[
"vervaldatum_apk": "20210402",
"datum_tenaamstelling": "20100318",
]
这些数字是没有连字符或空格的日期。 如何将它们转换为JavaScript日期? 我试过使用Moment.js模块,但它似乎对我不起作用。
您可以映射对象的条目,从每个条目中获取值v
,并使用正则表达式将其格式化为日期字符串的形式。 这里使用的表达式是:
/(\d+)(\d{2})(\d{2})/g
这将取你号码的前n-4位数字,并将其分组到第1组。 稍后在替换中使用$1
引用该组。 然后,它将取下两个表示月份的数字,并将它们分组到组#2(使用$2
引用)。 最后,它将取剩下的两位数并将其分组到组#3中。 然后可以替换匹配的组件,使它们在每个组之间包含一个-
。 然后可以将其包装在new Date()
构造函数中,以获取JavaScript Date对象。 映射完entires数组中的所有条目后,可以使用object.fromentries()
:
null
const obj = {"vervaldatum_apk": "20210402", "datum_tenaamstelling": "20100318"};
const res = Object.fromEntries(
Object.entries(obj).map(([k, v]) => [k, new Date(v.replace(/(\d+)(\d{2})(\d{2})/g, '$1-$2-$3'))])
);
console.log(res);
您可以通过使用正则表达式来匹配每个日期组,然后使用模板字符串重新创建日期来实现这一点。
const getDate = (date) => {
const {year, month, day} = date.match(/(?<year>\d{4})(?<month>\d{2})(?<day>\d{2})/, 'ig').groups;
return new Date(`${year}.${month}.${day}`);
}
上面的regex字符串使用命名的捕获组,从匹配操作返回的对象将包含一个包含年,月和日的组对象
然后使用模板字符串在下面创建.
分隔日期。
(我认为@EinaróLafsson已经提供了一个更清晰或更简短的版本)@puk,我不确定我是否足够理解这个问题,但假设这是Javascript对象,特别是“20210402”
和“20100318”
,我会做如下操作:
//starting with
[
"vervaldatum_apk":"20210402",
"datum_tenaamstelling":"20100318"
]
// convert to date
const vervaldatum = new Date(parseInt("20210402"))
const datum = new Date(parseInt("20100318"))
// Format each of them
// Germany uses day-month-year format
// formatting vervaldatum_apk
const formatted_vervaldatum_apk = `${vervaldatum.getDay()}-${vervaldatum.getMonth()}-${vervaldatum.getDay()}-${vervaldatum.getFullYear()}, ${vervaldatum.getHours()}:${vervaldatum.getMinutes()}:${vervaldatum.getSeconds()}`
// formatting datum_tenaamstelling
const formatted_datum_tenaamstelling = `${datum.getDay()}-${datum.getMonth()}-${datum.getFullYear()}, ${datum.getHours()}:${datum.getMinutes()}:${datum.getSeconds()}`
// Formatted object
const formattedDateObject = {
vervaldatum_apk: formatted_vervaldatum_apk ,
datum_tenaamstelling: formatted_datum_tenaamstelling
}
/// this is the object
formattedDateObject = {
datum_tenaamstelling: "3-11-1969, 22:35:0",
vervaldatum_apk: "3-11-3-1969, 22:36:50"
}
// Formatted array
// So from
[
"vervaldatum_apk":"20210402",
"datum_tenaamstelling":"20100318"
]
// you end up with (hour, minutes, and seconds added)
[
"vervaldatum_apk":"3-11-3-1969, 22:36:50",
"datum_tenaamstelling":"3-11-1969, 22:35:0"
]