javascript - 用javascript修改日期字符串
问题描述
我有一些事件会拉出它的日期,如下所示:
6 月 20 日上午 10 点至 9 月 5 日晚上 10 点
9 月 28 日中午 - 下午 4 点
我无法控制它返回的内容,因此我需要通过 javascript 将其删除
我需要删除时间并用 3 个字符版本替换月份,如下所示:
6 月 20 日 - 9 月 5 日
我已经开始这样做了,但我不知道如何删除时间,因为它可能被格式化为 AM/PM 或 MIDNIGHT/NOON
var dateExample = '2nd August 9am - 27th September midnight';
function trimDate(date){
const dateArray = date.split(' ');
var months = [['January', 'Jan'], ['February', 'Feb'], ['March', 'Mar'], ['April', 'Apr'], ['May', 'May'], ['June', 'Jun'], ['July', 'Jul'], ['August', 'Aug'], ['September', 'Sep'], ['October', 'Oct'], ['November', 'Nov'], ['December', 'Dec']];
for (let x = 0; x < months.length; x++){
let i = dateArray.findIndex(d => d === months[x][0]);
if (i > -1) dateArray.splice(i, 1, months[x][1]);
}
console.log(dateArray.join(' '));
}
trimDate(dateExample);
解决方案
使用正则表达式可以更简单地替换日期:
var dateExample = '2nd August 9am - 27th September midnight';
var re = /January|February|March|April|May|June|July|August|September|October|November|December/gi;
var replaced = dateExample.replace(re, m => m.substring(0,3));
console.log(replaced)
您可以使用类似的技巧,正则表达式可能会更复杂一些:
var dateExample = '2nd August 9am- 27th September midnight';
var datesRegex = /January|February|March|April|May|June|July|August|September|October|November|December/gi;
var timesRegex = /\w*([0-9]{1,2}(am|pm|AM|PM))|(noon|midnight)\w*/gi
var replaced = dateExample.replace(datesRegex, m => m.substring(0,3))
.replace(timesRegex,'');
console.log(replaced)
把它们放在一起
function clean(input){
var datesRegex = /January|February|March|April|May|June|July|August|September|October|November|December/gi;
var timesRegex = /\w*([0-9]{1,2}(am|pm|AM|PM)\w*)|(noon|midnight)/gi
return input.replace(datesRegex, m => m.substring(0,3))
.replace(timesRegex,'');
}
// test cases
console.log(clean("20th June 10am - 5th September 10pm"));
console.log(clean("2nd August 9am - 27th September midnight"));
console.log(clean("2nd August noon - 27th September midnight"));
推荐阅读
- python - 如何根据前一行的值标记数据?
- ocaml - lubuntu does not see executable file generated by ocamlopt on NixOS
- reactjs - 如何在 React 的 ErrorBoundary 中获取错误原因
- python - 如何在二进制级别上将整数解释为 python 中的不同类型
- ios - 如何使用最小最大几何边界创建 CLCircularRegion
- c# - 调用构造函数时使用字符串作为类型的参数
- javascript - React:静音/取消静音 youtube 嵌入播放器,无需重新渲染整个组件
- reactjs - 如何通过 cloneelement 获得对功能组件的引用?
- javascript - 从函数返回多个对象
- javascript - 将格式为 `YYYYMMDD` 的日期字符串转换为 `DD/MM/YYYY`