将字符串转换为日期(格式为:年月日hh:mm:ss)



我知道关于日期格式有很多问题,但我一直在转换
我有一个字符串的格式是:mag 112021下午2:31:00("mag"是意大利语中May的缩写(
我想将其转换为日期,以便将其更改为格式DD/MM/YYYY HH:MM:ss(在这种情况下为">2021年5月11日14:31"(
我尝试使用new DateDate.parse函数,但在控制台中它会返回错误"无效日期">
以下是我尝试过的:

let a = "mag 11, 2021 2:31:00 pm";
let b = new Date(a);
console.log(b);
console output -----> Invalid Date
let a = "mag 11, 2021 2:31:00 pm";
let b = Date.parse(a);
console.log(b);
console output -----> NaN

知道吗?Thx

这个问题以前已经回答过很多次了,下面是针对这个特定案例的。

不需要Date对象,时间戳可以分为几个部分,月份名称转换为数字,然后重新格式化部分,例如

/*
mag 11, 2021 2:31:00 pm => DD/MM/YYYY HH:MM:ss 
e.g. 11/05/2021 14:31
*/
function reformatDate(date) {
let z = n => ('0'+n).slice(-2);
let months = [,'gen','feb','mar','apr','mag','giu',
'lug','ago','set','ott','nov','dic'];
let [M,D,Y,h,m,s,ap] = date.toLowerCase().split(/W+/);
h = h%12 + (ap == 'am'? 0 : 12);
M = months.indexOf(M);
return `${z(D)}/${z(M)}/${Y} ${z(h)}:${m}`;
}
console.log(reformatDate('mag 11, 2021 2:31:00 pm'));

在OP中,格式标记包括秒,但示例中没有。如果需要,在上面的输出中添加秒应该很容易。

可以修改以上内容,以基于特定语言构建月份名称数组,但随后也需要将要使用的语言传递给函数。

如果使用库来解析字符串,则必须为解析器指定语言和格式(例如date-fns允许设置解析和格式语言(,然后是输出的语言和格式。因此,除非需要其他日期操作,否则库可能会遇到更多麻烦。

let now = new Date();
var dateString = moment(now).format('YYYY-MM-DD');
console.log(dateString) // Output: 2020-07-21
var dateStringWithTime = moment(now).format('YYYY-MM-DD HH:MM:SS');
console.log(dateStringWithTime) // Output: 2020-07-21 07:24:06

您可以在这里查看Javascript 的dateTime的所有详细信息

最新更新