明日 10:30:40
今日 14:00:08
6月8日 17:07:16
请问以上这些格式如何换算成下面这种时间格式
2023-6-2 10:30:40
2023-6-1 14:00:08
2023-6-8 17:07:16
用asp函数或者正则。
请问能做到吗?
可能难度很大,希望有超级高手帮忙。
谢谢。
明日 10:30:40
今日 14:00:08
6月8日 17:07:16
请问以上这些格式如何换算成下面这种时间格式
2023-6-2 10:30:40
2023-6-1 14:00:08
2023-6-8 17:07:16
用asp函数或者正则。
请问能做到吗?
可能难度很大,希望有超级高手帮忙。
谢谢。
我不太懂asp是啥,用js实现了一下,处理了了一些异常情况,目前从结果来看应该能满足你的需求。 当前 我的正则对 x月x 和 时间的校验不是很严格,你完全可以再修改一下。
如果能帮到你,帮我点个小赞,哈哈哈
function formatTime(dateStr = '') {
if(dateStr) {
const dateMatch = dateStr.replace(/^(([月\d]{3,5})|([前今明后]))日(\s[0-9:]{8})$/, (match, p1, p2, p3, time) => {
let date = ''
if(p1.length === 1) {
const dateMap = {
'前': -2,
'昨': -1,
'明': 1
};
const count = dateMap[p1] || 0;
const today = new Date().getDate()
const dateNum = today + count;
const current = new Date();
current.setDate(dateNum);
date = new Date(current).toLocaleDateString();
}else {
const year = new Date().getFullYear();
const mon = p1.split('月')[0];
const day = p1.split('月')[1];
const current = new Date()
current.setMonth(mon - 1);
current.setDate(day);
date = new Date(current).toLocaleDateString();
}
const resStr = date + time;
const str = new Date(date + time).toLocaleString()
console.log('end: ', dateStr, ' => ', str);
return str;
})
return dateMatch
}
}
console.log(formatTime('明日 10:30:40')); // 2023/6/2 10:30:40
console.log(formatTime('今日 14:00:08')); // 2023/6/1 14:00:08
console.log(formatTime('6月8日 17:07:16')); // 2023/6/8 17:07:16
// 稍微有些特殊的情况
console.log(formatTime('0月1日 17:07:16')); //2022/12/1 17:07:16
console.log(formatTime('12月35日 17:07:16')); // 2024/1/4 17:07:16
console.log(formatTime('13月3日 17:07:16')); // 2024/1/3 17:07:16
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
对于今日new Date()就行,然后转成年月日
昨日就是今日减去一,对于几月几日将月和日字替换成-就行