使用javascript修改日期字符串

使用javascript修改日期字符串,javascript,Javascript,我有一些事件会推迟它的日期,如下所示: 6月20日上午10时至9月5日晚上10时 9月28日中午至下午4点 我无法控制它返回的内容,因此需要通过javascript将其删除 我需要删除时间并将月份替换为3个字符的版本,如下所示: 6月20日至9月5日 我已经开始这样做了,但我不知道如何删除时间,因为它可以被格式化为AM/PM或午夜/中午 : var dateExample='8月2日上午9点至9月27日午夜'; 功能日期(日期){ const dateArray=date.split(“”);

我有一些事件会推迟它的日期,如下所示:

6月20日上午10时至9月5日晚上10时

9月28日中午至下午4点

我无法控制它返回的内容,因此需要通过javascript将其删除

我需要删除时间并将月份替换为3个字符的版本,如下所示:

6月20日至9月5日

我已经开始这样做了,但我不知道如何删除时间,因为它可以被格式化为AM/PM或午夜/中午

:

var dateExample='8月2日上午9点至9月27日午夜';
功能日期(日期){
const dateArray=date.split(“”);
var月数=['一月',[二月',[二月',[三月',[四月',[四月',[五月',[六月',[六月',[六月',[八月',[八月',[九月',[九月',[十月',[十一月',[十一月',[十二月',[十二月'];
对于(设x=0;xd==months[x][0]);
如果(i>-1)dateArray.splice(i,1,months[x][1]);
}
log(dateArray.join(“”));
}
trimDate(日期示例);

使用正则表达式替换日期要简单得多:

var dateExample='8月2日上午9点至9月27日午夜';
var re=/一月|二月|三月|四月|五月|六月|七月|八月|九月|十月|十一月|十二月/gi;
var replaced=dateExample.replace(re,m=>m.substring(0,3));

console.log(已替换)
使用regex可以更简单地替换日期:

var dateExample='8月2日上午9点至9月27日午夜';
var re=/一月|二月|三月|四月|五月|六月|七月|八月|九月|十月|十一月|十二月/gi;
var replaced=dateExample.replace(re,m=>m.substring(0,3));

console.log(已替换)
看起来应该可以使用单个正则表达式:

const-dateExamples=[
“8月2日上午9点至9月27日午夜”,
“6月20日上午10点至9月5日晚上10点”,
“8月2日中午-9月27日午夜”
]
常量regex=/[0-9]{1,2}[ndrths]{2}[\s]{1}[\w]{3}/g

dateExamples.forEach(dateExample=>console.log(dateExample.match(regex.join('-')))
看起来应该可以使用单个正则表达式:

const-dateExamples=[
“8月2日上午9点至9月27日午夜”,
“6月20日上午10点至9月5日晚上10点”,
“8月2日中午-9月27日午夜”
]
常量regex=/[0-9]{1,2}[ndrths]{2}[\s]{1}[\w]{3}/g

dateExamples.forEach(dateExample=>console.log(dateExample.match(regex.join('-')))
比我的弱尝试好得多。事实上,你的尝试很有帮助!比我弱的尝试好多了哈,你的的确很有帮助!这是一个很好的答案!这是一个很好的答案!
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);