Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过在javascript中搜索模式来替换子字符串_Javascript - Fatal编程技术网

通过在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。谢谢好奇的心-在这种情况下使用设置时间是很好的