通过在javascript中搜索模式来替换子字符串
我的日期和时间如下通过在javascript中搜索模式来替换子字符串,javascript,Javascript,我的日期和时间如下 Wed Jun 13 2018 21:08:29 GMT-0700 (Pacific Daylight Time) 和21.08.29可以是任何字符串,具体取决于用户选择数据的时间。我想用11:59:59替换这个21:08:29,所以输出应该是 Wed Jun 13 2018 11:59:59 GMT-0700 (Pacific Daylight Time) 任何想法,示例代码供您通过正则表达式解决 var originalText = 'Wed Jun 13 2018
Wed Jun 13 2018 21:08:29 GMT-0700 (Pacific Daylight Time)
和21.08.29可以是任何字符串,具体取决于用户选择数据的时间。我想用11:59:59替换这个21:08:29,所以输出应该是
Wed Jun 13 2018 11:59:59 GMT-0700 (Pacific Daylight Time)
任何想法,示例代码供您通过正则表达式解决
var originalText = 'Wed Jun 13 2018 21:08:29 GMT-0700 (Pacific Daylight Time)';
var replacedText = originalText.replace(/[0-9]{2}:[0-9]{2}:[0-9]{2}/,'11:59:59');
[0-9]-任何数字
{2} -字符串长度[0-9]
但是,如果字符串是日期类型变量或可以存储在日期类型变量中
var newVar = new Date( 'Jun 13 2018 21:08:29 GMT-0700');
newVar.setHours(11);
newVar.setMinutes(59);
newVar.setSeconds(59);
将给出2018年6月13日11:59:59 GMT-0700
你也可以这样做,为什么不使用正则表达式呢
var str = /*(DateTime string)*/;
var _regex = [0-9]{2}:[0-9]{2}:[0-9]{2};
var newstr = str.replace(_regex, /*(Time what you want)*/);
但是,您提供的字符串看起来像“代码>日期>代码>对象,所以请考虑使用它的成员函数。
这可能会有所帮助:假设您正在寻找24小时的强制前导0:
var newvalue='11:59:59';
Var str='Wed Jun 13 2018 21:08:29 GMT-0700 (Pacific Daylight Time)';
var replacedStrign=str.replace(/^(?:2[0-3]|[01][0-9]):[0-5][0-9]:[0-5][0-9]$/, newvalue)
您可以将字符串转换为日期对象,操作该日期对象,然后再转换回字符串
const time = new Date("Wed Jun 13 2018 21:08:29 GMT-0700 (Pacific Daylight Time)")
time.setHours(11)
time.setMinutes(59)
time.setSeconds(59)
time.toString() // "Wed Jun 13 2018 11:59:59 GMT-0600 (Mountain Daylight Time)"
编辑:我意识到此解决方案会丢失时区信息,但在某些情况下可能仍然是一种有用的方法。这里有一个想法-使用字符串替换方法和一个查找数字冒号冒号的正则表达式-为什么希望时间在正午前一秒?@Kim2018是原始对象-日期?如果是,为什么不尝试设置时间因子,而不是解析字符串,然后更改时间。这是一个更好的主意:我认为最简单的方法是将整个字符串分解为3部分,并将第2部分替换为11:59:59。谢谢好奇的心-在这种情况下使用设置时间是很好的